NSPredicate 上的字典数组 iOS

Posted

技术标签:

【中文标题】NSPredicate 上的字典数组 iOS【英文标题】:NSPredicate on array of dictionaries iOS 【发布时间】:2014-08-07 10:51:09 【问题描述】:

如何根据 key 另一个字典(位于数组内)内的字典的 NSPredicate 过滤字典数组,这是我的回应。

[
     
         "_id" =     
               "$id" = 53e28497e37c70d83021c830;
         ;
         access = public;
     ,
     
         "_id" =     
               "$id" = 53e28497e37c70d83021c839;
         ;
         access = public;
      
]

现在我需要根据键 $id 过滤这个数组。我尝试了不同的谓词格式来过滤这个数组但没有运气。我怎样才能得到匹配$id的字典对象。

【问题讨论】:

【参考方案1】:

试试这样,

NSArray *filtered = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self.id.%K == '1'",@"$id"]];

【讨论】:

感谢您的回答,但在NSArray* res = [array filteredArrayUsingPredicate:pred]; 谓词处崩溃的应用程序是_id.$id == "53e28497e37c70d83021c839" 这里有文字字符串的问题,用任何字符串更改 $id 键并检查它是否有效 您的回答[NSPredicate predicateWithFormat:@"self.%K.%K == '53e28497e37c70d83021c830'",@"_id",@"$id"] 中的小编辑对我有用。接受并投票赞成。谢谢。【参考方案2】:
NSString* filter = @"53e28497e37c70d83021c839";    
NSArray* res = [originArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"%K LIKE[c] %@", @"_id.$id", filter]];

【讨论】:

以上是关于NSPredicate 上的字典数组 iOS的主要内容,如果未能解决你的问题,请参考以下文章

使用 NSPredicate 过滤包含字典的数组数组

在iOS中的字典中使用字典数组的NSPredicate进行过滤

如何在嵌套字典数组上使用 NSpredicate

NSpredicate 结果

使用 NSPredicate 仅从字典数组中获取特定键的值

NSPredicate 对数组的数组