swift : 使用 NSPredicate 过滤 NSMutableDictionary 的 NSMutableArray
Posted
技术标签:
【中文标题】swift : 使用 NSPredicate 过滤 NSMutableDictionary 的 NSMutableArray【英文标题】:swift : Use NSPredicate to filter NSMutableArray of NSMutableDictionary 【发布时间】:2015-12-17 04:59:40 【问题描述】:以下是字典数组:
DATA: [
GAMEID: 509782,
FIELDNUMBER: "KPB #1",
,
GAMEID: 509782,
FIELDNUMBER: "KPB #1",
,
GAMEID: 509782,
FIELDNUMBER: "KPB #1",
,
...
现在我想根据GAMEID
过滤数组。为此,我正在创建一个循环,并在其中使用NSPredicate
。以下是我的代码:
func callSort(arr:NSMutableArray) -> NSMutableDictionary
var arrId = arr.valueForKey("GAMEID")
for(index, ele) in arrGames.enumerate()
let str = ele.valueForKey("GAMEID")
let pred = NSPredicate(format: "ANY DATA.GAMEID == %@", argumentArray: str) // error on this line
var filterArr = arrGames.filteredArrayUsingPredicate(pred)
return sortedDict
我得到的错误是:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse function name 'Optional:' into supported selector (Optional:)
我不确定我是否以正确的方式使用NSPredicate
。
我哪里错了?我该如何解决?
编辑的代码
let pred = NSPredicate(format: "GAMEID = %d", argumentArray: [str!])
var filterArr = arrGames.filteredArrayUsingPredicate(pred)
【问题讨论】:
How to filter NSArray using predicate on an object property的可能重复 @DipenPanchasara 我想要 GAMEID 的完全匹配,因此不想使用contains
。
第一个问题@z22,要排序还是过滤? sort
(ordering) 与 filter
(search) 不同。
@DipenPanchasara 我想根据 id 过滤掉元素(组)
那么首先你需要找到不同的对象,然后用匹配的对象过滤它。因为人们可以指导你,但不确定提供代码。
【参考方案1】:
嗨,我在目标 c 中解决了这个问题,我有相同的 JSON 格式,你可以参考这个Searching NSArray of NSDictionary objects 答案吗?我已经将它用于搜索功能希望这对您有所帮助
【讨论】:
以上是关于swift : 使用 NSPredicate 过滤 NSMutableDictionary 的 NSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章
NSPredicate 对象模型数组过滤器在 Swift 4.0 中无法正常工作