繁体   English   中英

Swift:创建一个 UIImage 数组

[英]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

您有两个问题(并且没有正则表达式!)

1. 您不是在创建数组。 你需要做:

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")!]

您需要附加到数组,因为(摘自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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM