【发布时间】:2017-03-05 03:48:18
【问题描述】:
我有一个字典数组,我试图获取数组中每个玩家的最高分数。每个玩家可以有多个条目我试图获得每个玩家最好成绩的字典数组。
NSArray [0] - NSDictionary
- [0] Score: (double)20.7
- [1] NameID: (int) 1
- [2] Date
[1] - NSDictionary
- [0] Score: (double)25
- [1] NameID: (int) 1
- [2] Date
[2] - NSDictionary
- [0] Score: (double)28
- [1] NameID: (int) 2
- [2] Date
[3] - NSDictionary`
- [0] Score: (double)26
- [1] NameID: (int) 3
- [2] Date
我尝试过使用 NSPredicate predicateWithFormat 但我只能取回数组中与名称无关的所有内容的最大值。
预期输出:
NSArray [1] - NSDictionary
- [0] Score: (double)25
- [1] NameID: (int) 1
- [2] Date
[2] - NSDictionary
- [0] Score: (double)28
- [1] NameID: (int) 2
- [2] Date
[3] - NSDictionary`
- [0] Score: (double)26
- [1] NameID: (int) 3
- [2] Date
感谢您的帮助。
【问题讨论】:
-
您是否尝试将 NameID 放入您的 NSPredicate 中?你是如何设置你的 NSPredicate 的?
-
我不确定如何将 NameID 添加到谓词中并评估最大分数...我尝试了很多不同的方法,包括子查询,但我遗漏了一些东西...我试过了,但是后来发现完全错了... NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"SELF.Score = NameID.@max.Score"];
-
别想太多。只需遍历字典数组,随时构建输出字典。对于每个玩家 ID,只需根据输出字典中的分数(如果有)检查分数,并在需要时更新输出
-
我想多了。以为我可以通过使用 NSPredicate 让它变得简单,但最终让它变得比我需要的更复杂......谢谢大家的回复。下面的一些答案没有按预期工作。我将我使用的那个标记为正确答案。
标签: ios objective-c arrays dictionary nspredicate