Swift:创建一个UIImage数组

kmi*_*las 35 arrays uiimage ios swift

使用Swift,我正在尝试为简单动画创建一个UIImage对象数组.animationImages读取的上下文帮助"数组必须包含UI图像对象".

我试图按如下方式创建所述数组,但似乎无法使语法正确:

var logoImages: UIImage[]
logoImages[0] = UIImage(name: "logo.png")
Run Code Online (Sandbox Code Playgroud)

抛出:!初始化之前使用的变量徽标图像

然后我试了一下

var logoImages = []
logoImages[0] = UIImage(named: "logo.png")
Run Code Online (Sandbox Code Playgroud)

哪个投掷:!无法分配此表达式的结果

我在这里查看了文档,但上下文不一样:https: //developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html

Jia*_*aro 82

你有两个问题(没有正则表达式!)

1.您没有创建数组.你需要这样做:

var logoImages: [UIImage] = []
Run Code Online (Sandbox Code Playgroud)

要么

var logoImages: Array<UIImage> = []
Run Code Online (Sandbox Code Playgroud)

要么

var logoImages = [UIImage]()
Run Code Online (Sandbox Code Playgroud)

要么

var logoImages = Array<UIImage>()
Run Code Online (Sandbox Code Playgroud)

2.如果要将新对象添加到数组中,则应使用Array.append()或某些等效的语法糖:

logoImages.append(UIImage(named: "logo.png")!)
Run Code Online (Sandbox Code Playgroud)

要么

logoImages += [UIImage(named: "logo.png")!]
Run Code Online (Sandbox Code Playgroud)

要么

logoImages += [UIImage(named: "logo.png")!, UIImage(named: "logo2.png")!]
Run Code Online (Sandbox Code Playgroud)

您需要附加到数组,因为(摘自docs):

您不能使用下标语法将新项追加到数组的末尾.如果尝试使用下标语法来检索或设置超出数组现有边界的索引的值,则会触发运行时错误.但是,通过将索引与数组的count属性进行比较,可以在使用之前检查索引是否有效.除非count为0(表示数组为空),否则数组中最大的有效索引将始终为count-1,因为数组从零开始索引.

当然,你可以在可能的情况下简化它:

var logoImage: [UIImage] = [
    UIImage(named: "logo1.png")!,
    UIImage(named: "logo2.png")!
]
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,UIImage现在有一个"可用的"初始化程序,这意味着它返回一个可选项.我已经更新了所有代码,以反映这一变化以及对数组语法的更改.