首先,如果标题没有描述性,我深表歉意。请随意更改它以更适合我的问题。
基本上,我有一个名为 eventImages 的 UIImages
数组。
在 obj-C 中,我声明它并像这样初始化它:
NSArray *eventImages;
eventImages = @[ [UIImage imageNamed:@"lion_dance.jpg"],
[UIImage imageNamed:@"ivan_cheong.jpg"],
[UIImage imageNamed:@"tien_nguyen.jpg"],
[UIImage imageNamed:@"step_up.jpg"],
@[ [UIImage imageNamed:@"dj_happee.jpg"], [UIImage imageNamed:@"adam_cease.jpg"], [UIImage imageNamed:@"ao_dai.jpg"] ],
[UIImage imageNamed:@"california_summer.jpg"],
[UIImage imageNamed:@"question_mark"] ];
如您所见,在第 4 个索引处,我能够存储一个内部数组 UIImages
。
我想在 Swift 2.0 中实现这一点
这是我到目前为止所做的:
var eventImages: [UIImage]?
eventImages = [UIImage(named: "lion_dance.jpg")!,
UIImage(named: "ivan_cheong.jpg")!, UIImage(named: "tien_nguyen.jpg")!,
UIImage(named: "step_up.jpg")!, [UIImage(named: "dj_happee.jpg")!,
UIImage(named: "adam_cease.jpg")!, UIImage(named: "ao_dai.jpg")!],
UIImage(named: "california_summer.jpg")!, UIImage(named: "question_mark")!]
但是,编译器给我错误:
Contextual type 'UIImage' cannot be used with array literal
如何在 Swift 中实现在 Obj-C 中实现的目标?
谢谢
最佳答案
你可以这样做:
var eventImages = [UIImage(named: "lion_dance.jpg")!,
UIImage(named: "ivan_cheong.jpg")!, UIImage(named: "tien_nguyen.jpg")!,
UIImage(named: "step_up.jpg")!, [UIImage(named: "dj_happee.jpg")!,
UIImage(named: "adam_cease.jpg")!, UIImage(named: "ao_dai.jpg")!],
UIImage(named: "california_summer.jpg")!, UIImage(named: "question_mark")!]
如果通过 UIImage
声明数组类型,则不能添加 UIImage
([UIImage]
) 的数组,因为类型不同。然而,如果你跳过类型声明,Swift 会找出并允许这个数组存在。
数组的类型应该是 NSObject
我想,然后你可以将它转换为访问图像:
class SomeClass {
var eventImages = [[UIImage()], UIImage(), UIImage(), UIImage(), [UIImage(), UIImage(), UIImage()]]
func doSomething() {
if let singleImage = eventImages[1] as? UIImage {
// Access single image
}
if let imageArray = eventImages[4] as? [UIImage] {
// Access image array
}
}
}
关于objective-c - 如何在 Swift 2.0 的 UIImage 数组的每个索引中存储多个 UIImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35053663/