Swift:创建一个UIImage数组

时间:2014-06-11 20:40:07

标签: ios arrays uiimage swift

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

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

var logoImages: UIImage[]
logoImages[0] = UIImage(name: "logo.png")

这引发: !初始化之前使用的变量徽标图像

然后我试了

var logoImages = []
logoImages[0] = UIImage(named: "logo.png")

哪个抛出: !无法分配此表达式的结果

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

3 个答案:

答案 0 :(得分:79)

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

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

您需要追加到数组,因为(摘录from docs):

  

您不能使用下标语法将新项目附加到结尾   阵列。如果您尝试使用下标语法来检索或设置值   对于一个超出数组现有边界的索引,你会的   触发运行时错误。但是,您可以检查索引是否有效   在使用它之前,将它与数组的count属性进行比较。除了   当count为0(表示数组为空)时,最大的有效索引   在数组中将始终为count - 1,因为数组是从索引编制的   零。

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

var logoImage: [UIImage] = [
    UIImage(named: "logo1.png")!,
    UIImage(named: "logo2.png")!
]

编辑:请注意,UIImage现在有一个"failable" initializer,这意味着它返回一个可选项。我已更新了所有代码,以反映此更改以及对数组语法的更改。

答案 1 :(得分:2)

您正在声明徽标图像的类型,但未创建该类型的实例。

使用var logoImages = UIImage[]()为您创建一个新阵列。

...然后在创建一个新的空数组实例后,如@Jiaaro的回答所述,你不能使用下标来添加一个空数组

答案 2 :(得分:1)

var image : UIImage = UIImage(named:"logo.png")    
var logoImages = [image]