如何从swift中的字典中获取所有索引值?

时间:2017-02-09 06:48:14

标签: ios swift sqlite dictionary

我正在尝试读取字典中所有索引的值。我一次只能抓一个索引。

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等于某个数字的值。我怎么能实现这个目标呢?

4 个答案:

答案 0 :(得分:0)

您可以通过这种方式从字典中获取所有值。

echo floatval('2.00'); //2
echo floatval('2.23'); //2.23

答案 1 :(得分:0)

这可能需要一些调整,因为我没有太多的代码可以解决:

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

在英语中,这会获取您的monster字典,访问其包含的所有values的数组,然后根据{ }括号中指定的内容进行过滤。结果将保存在monsterArray常量。

使用monsterArray,您可以针对这些值执行您需要的任何操作。

使用此方法也比for循环快得多,因为您不需要遍历每个可能的值。

答案 2 :(得分:0)

试试这个

如果Monster对象中的move属性不是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你有移动ID,现在你可以做你想做的那些id。

答案 3 :(得分: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
   }
}
相关问题