2017-02-09 93 views
0

我正在嘗試讀取字典中所有索引的值。我一次只能抓取一個索引。如何在swift中從字典中獲取所有索引值?

var monster: Monster! 

monster.moves![0]["move_id"] as? Int ?? 0 

這讓我抓住索引中的第一項。但我正在閱讀一個SQLite數據庫,並需要匹配值。

for user in try! db.prepare(Table("moves").where(id == (monster.moves![0]["move_id"] as? Int ?? 0) && damage_class == (monster.moves![0]["move_id"] as? Int ?? 0))) { } 

它只會檢查id是否與monster.moves匹配!在第一個索引處,而不是檢查所有的索引。我需要獲取move_id等於某個數字的值。我怎麼能做到這一點?

回答

0

您可以通過這種方式從字典中獲取所有值。

for value in yourDictionary.values.array { 
    print("\(value)") 
} 
0

這是可能的,這可能需要一些調整,因爲我沒有太多的代碼的熄滅的:

let monsterArray = monster.values.filter { $0["move_id"] == id && $0["move_id"] == damage_class } 

在英語中,這需要您monster字典,訪問的陣列它包含的所有values,然後根據{ }括號中指定的內容進行過濾。結果將保存在monsterArray常數中。

隨着monsterArray,你可以執行任何你需要對付這些值的行動。

使用這種方法也會比for循環快得多,因爲您不需要遍歷每個可能的值。

0

試試這個

如果你的怪物物體移動屬性不是NSArray的類型,然後將其轉換成NSArray的類型

if let movesArray : NSArray = monster.moves as! NSArray 
{ 
    let idsArray = movesArray.valueForKey("move_id") as! [Int] // change it to your required type array 
} 

有你現在去,你有idsArray移動IDS,現在你可以做你想用這些ID做什麼。

0

您需要索引所有字典的值,請試試。我希望它的工作

for index in 0...monster.moves.count-1{ 

    for user in try! db.prepare(Table("moves").where(id == (monster.moves![index]["move_id"] as? Int ?? 0) && damage_class == (monster.moves![index]["move_id"] as? Int ?? 0))) 
    { 
     //Whatever you want to do 
    } 
}