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 中无法正常工作

使用 Swift 过滤 Realm 对象

使用 NSPredicate 对表视图中的核心数据进行排序 (Swift)

NSPredicate 过滤数组的一部分

swift - NSPREDICATE 失败 [重复]

在 NSPredicate 中绑定 var - SwiftUI