我使用SQLite的cocoapod這個項目像這樣在Swift中遍歷可選數組?
import SQLite
var db = try! Connection()
var id: Expression<Int>!
var identifier: Expression<String>!
有了它,我讀的從SQLite數據庫移動列表。每個怪物都有可以學習的動作。一些怪物可以比其他怪物學到更多動作。
var monster: Monster!
var monArray = [Monster]()
var dataSource: DataSource!
爲了讓怪物移動ID我使用這段代碼。這使我可以抓住陣列中的第一步。改變0
會使我獲得第二,第三步等等。
monster.moves![0]["move_id"] as! Int
現在我正在使用SQLite數據庫,因爲我需要將我的plist中的怪物ID值與SQLite數據庫中的怪物ID值匹配。我用這個代碼,這樣做
override func viewWillAppear(_ animated: Bool) {
let movesArray = Array(try! db.prepare(Table("moves").where(identifier == moves.name!.lowercased())))
for user in movesArray {
monArray = dataSource.mons.filter{ $0.moves![0]["move_id"] as! Int == user[id] }
}
}
一切正常,直到我試圖增加指標範圍內。
for user in movesArray {
for i in 0...6 {
monArray = dataSource.mons.filter{ $0.moves![i]["move_id"] as! Int == user[id] }
}
}
看到我更換0
與範圍i
?我這樣做是因爲怪物有不止一個動作,如果我把它留在0
我的應用程序將只顯示那些學習這個動作作爲他們的第一個動作的怪物。爲了更好地解釋,我目前的代碼並沒有查看怪物是否知道這一舉動,而只是通過怪物是否知道作爲其第一步。
在上面的代碼中,我增加了範圍認爲它可以解決我的問題,但我的應用程序會崩潰,因爲有些怪物只在他們的指數1
舉動,所以任何上述指標0
將錯誤
崩潰fatal error: Index out of range
所以回顧一下,我需要遍歷整個數組而不是第一個索引,而不會崩潰。我怎樣才能做到這一點?
請您詳細解釋一下這個答案嗎? – baxu