數據結構:字典數組,每個字典含 data 字段為字符串數組。需過濾包含特定字符串的字典。
NSArray *array = @[
@{@"id": @1, @"data": @[@"macbook", @"mac mini"]},
@{@"id": @2, @"data": @[@"ipad", @"ipod"]},
@{@"id": @3, @"data": @[@"macbook", @"ipod"]}
];
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 表達力強大。