首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS NSPredicate 過濾字典數組中嵌套數組字段:使用 ANY 關鍵字匹配任意元素

     編輯:程式設計綜合問答

數據結構:字典數組,每個字典含 data 字段為字符串數組。需過濾包含特定字符串的字典。

數據示例

NSArray *array = @[
    @{@"id": @1, @"data": @[@"macbook", @"mac mini"]},
    @{@"id": @2, @"data": @[@"ipad", @"ipod"]},
    @{@"id": @3, @"data": @[@"macbook", @"ipod"]}
];

正確 Predicate

NSString *text = @"mac";
// ANY 表示 data 數組中任意元素滿足條件
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY data contains[cd] %@", text];
NSArray *filtered = [array filteredArrayUsingPredicate:predicate];
// 結果:id=1 和 id=3 的字典

關鍵字對比

關鍵字含義
ANY集合中至少一個元素滿足
ALL集合中所有元素滿足
NONE集合中無元素滿足
IN值在集合中

進階:多條件組合

// 包含 "mac" 且 id > 1
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY data contains[cd] %@ AND id > %@", text, @1];

ANY 輕鬆穿透嵌套數組,NSPredicate 表達力強大。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved