Swift:创build一个UIImage数组
使用Swift,我试图创build一个简单的animation的UIImage对象的数组。 animationImages
上下文帮助读取“数组必须包含UI图像对象”。
我试图创build如下的数组,但似乎无法得到正确的语法:
var logoImages: UIImage[] logoImages[0] = UIImage(name: "logo.png")
这抛出:! variableslogoImages在被初始化之前使用
然后我试了一下
var logoImages = [] logoImages[0] = UIImage(named: "logo.png")
抛出:! 不能分配给这个expression式的结果
我已经在这里查看了文档,但上下文不一样: https : //developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html
你有两个问题(没有正则expression式!)
1.你没有创build一个数组。 你需要做的是:
var logoImages: [UIImage] = []
要么
var logoImages: Array<UIImage> = []
要么
var logoImages = [UIImage]()
要么
var logoImages = Array<UIImage>()
2.如果你想添加新的对象到一个数组,你应该使用Array.append()
或者一些等价的语法糖:
logoImages.append(UIImage(named: "logo.png")!)
要么
logoImages += [UIImage(named: "logo.png")!]
要么
logoImages += [UIImage(named: "logo.png")!, UIImage(named: "logo2.png")!]
你需要追加到数组,因为(摘自文档 ):
您不能使用下标语法将新项目追加到数组的末尾。 如果尝试使用subscript语法检索或设置数组现有边界之外的索引的值,则会触发运行时错误。 但是,通过将其与数组的count属性进行比较,您可以在使用它之前检查索引是否有效。 除了count为0(意味着数组为空),数组中最大的有效索引总是count-1,因为数组从0开始索引。
当然你可以随时简化它:
var logoImage: [UIImage] = [ UIImage(named: "logo1.png")!, UIImage(named: "logo2.png")! ]
编辑:请注意,UIImage现在有一个“failable”初始值设定项 ,这意味着它返回一个可选项。 我已经更新了所有的代码,以反映这种变化以及数组语法的变化。
您正在声明logoImages的types,但不创build该types的实例。
使用var logoImages = UIImage[]()
这将为您创build一个新的数组。
…然后在创build一个新的空数组实例之后,如@Jiaaro的答案中所述,您不能使用下标来添加到一个空数组
var image : UIImage = UIImage(named:"logo.png") var logoImages = [image]