首页 文章

Swift:创建一个UIImage数组

提问于
浏览
32

使用Swift,我正在尝试为简单动画创建一个UIImage对象数组 . animationImages 的上下文帮助读取,"The array must contain UI Image objects."

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

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

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

然后我试了一下

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

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

我've checked the docs here, but the context isn' t相同:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/CollectionTypes.html

3 回答

  • 1

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

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

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

  • 2

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

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

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

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

相关问题