簡體   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