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