2017-02-09 1 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))) { } 

Он будет проверять, совпадает ли идентификатор с 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, теперь вы можете сделать что вы хотите делать с этими идентификаторами.

0

Вам нужен индекс для всех значений словаря. Пожалуйста, попробуйте. i Надеюсь, это работа

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 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^