我希望我的用戶回圈瀏覽他們看到圖片的界面,并可以按下按鈕來生成屬于圖片的聲音。
為此,我試圖在 Swift 中構建一個包含兩個鍵值對的資料結構,這樣我就可以在我的用戶所在位置的當前索引處呼叫每個屬性的值。
其中一個屬性是image帶UIImage值的,另一個是sound帶string值的。在嘗試了幾件事之后,我能想到的最好的方法是下面的實作,但這會在我的變數中的每個變數上引發以下錯誤animals。錯誤:Cannot use instance member 'bird' within property initializer; property initializers run before 'self' is available。
當我用區域范圍(即在函式內部)宣告動物變數時,它作業正常。但我需要該變數具有全域范圍。我一直在搜索,不得不承認我并不完全理解所引發的錯誤。
誰能指出我做錯了什么?
XCode 中的代碼:
class element {
let image : UIImage
let sound : String
init (image : UIImage, sound : String) {
self.image = image
self.sound = sound
}
}
let monkey = element(image : UIImage(named: "Baviaan")!, sound : "monkey")
let donkey = element(image : UIImage(named: "Donkey")!, sound : "donkey")
let horse = element(image : UIImage(named: "Horse")!, sound : "horse")
let lion = element(image : UIImage(named: "Leeuw")!, sound : "lion")
let elephant = element(image : UIImage(named: "Olifant")!, sound : "elephant")
let sheep = element(image : UIImage(named: "Sheep")!, sound : "sheep")
let dog = element(image : UIImage(named: "Tekkel")!, sound : "dog")
let chicken = element(image : UIImage(named: "toktok")!, sound : "chicken")
let bird = element(image : UIImage(named: "birds")!, sound : "bird")
var animals = [bird,chicken,dog,donkey,elephant,horse,lion,monkey,sheep]
錯誤圖片:

uj5u.com熱心網友回復:
這種全域變數是不好的做法。不要那樣做。更好的方法是靜態屬性
struct Element {
let image : UIImage
let sound : String
static let animals = [
Element(image: UIImage(named: "Baviaan")!, sound: "monkey"),
Element(image: UIImage(named: "Donkey")!, sound: "donkey"),
Element(image: UIImage(named: "Horse")!, sound: "horse"),
Element(image: UIImage(named: "Leeuw")!, sound: "lion"),
Element(image: UIImage(named: "Olifant")!, sound: "elephant"),
Element(image: UIImage(named: "Sheep")!, sound: "sheep"),
Element(image: UIImage(named: "Tekkel")!, sound: "dog"),
Element(image: UIImage(named: "toktok")!, sound: "chicken"),
Element(image: UIImage(named: "birds")!, sound: "bird")
]
}
或更短
struct Element {
let image : UIImage
let sound : String
static let animals = [
("Baviaan", "monkey"), ("Donkey", "donkey"),
("Horse", "horse"), ("Leeuw", "lion"),
("Olifant", "elephant"), ("Sheep", "sheep"),
("Tekkel", "dog"), ("toktok", "chicken"), ("birds", "bird")]
.map{Element(image: UIImage(named: $0.0)!, sound: $0.1)}
}
你得到了動物
Element.animals
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/480810.html
上一篇:輪播視圖SwiftUI
