[英]Swift: Creating an array of UIImage
使用 Swift,我正在尝试为简单动画创建一组 UIImage 对象。 animationImages
上下文帮助显示,“数组必须包含 UI Image 对象。”
我尝试按如下方式创建所述数组,但似乎无法获得正确的语法:
var logoImages: UIImage[]
logoImages[0] = UIImage(name: "logo.png")
这抛出:! 初始化前使用的可变 logoImages
然后我试过了
var logoImages = []
logoImages[0] = UIImage(named: "logo.png")
哪个抛出:! 不能赋值给这个表达式的结果
我在这里检查了文档,但上下文不一样: https : //developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html
您有两个问题(并且没有正则表达式!)
var logoImages: [UIImage] = []
或者
var logoImages: Array<UIImage> = []
或者
var logoImages = [UIImage]()
或者
var logoImages = Array<UIImage>()
Array.append()
或一些等效的语法糖:logoImages.append(UIImage(named: "logo.png")!)
或者
logoImages += [UIImage(named: "logo.png")!]
或者
logoImages += [UIImage(named: "logo.png")!, UIImage(named: "logo2.png")!]
您需要附加到数组,因为(摘自docs ):
您不能使用下标语法将新项目附加到数组的末尾。 如果您尝试使用下标语法检索或设置数组现有边界之外的索引值,则会触发运行时错误。 但是,您可以在使用之前检查索引是否有效,方法是将其与数组的 count 属性进行比较。 除非 count 为 0(意味着数组为空),数组中最大的有效索引将始终为 count - 1,因为数组从零开始索引。
当然,您可以随时简化它:
var logoImage: [UIImage] = [
UIImage(named: "logo1.png")!,
UIImage(named: "logo2.png")!
]
编辑:请注意 UIImage 现在有一个“失败的”初始化程序,这意味着它返回一个可选的。 我已经更新了所有代码以反映此更改以及对数组语法的更改。
您正在声明 logoImages 的类型,但未创建该类型的实例。
使用var logoImages = UIImage[]()
将为您创建一个新数组。
...然后在创建一个新的空数组实例之后,如@Jiaaro 的回答中所述,您不能使用下标添加到空数组
var image : UIImage = UIImage(named:"logo.png")
var logoImages = [image]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.