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

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

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

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

【问题讨论】:

    标签: objective-c ios7 nsarray nsdictionary nspredicate


    【解决方案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]];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多