我正在尝试读取字典中所有索引的值。我一次只能抓一个索引。
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 :(得分: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
}
}