Bra*_*don 15 objective-c nspredicate ios
我正在尝试创建具有多个条件的NSPredicate.我找到了几个解决方案,但它们似乎都没有使用我的方法.我发现的最好看的是下面.
这是我的单一谓词方法,它运行得很好:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name contains[c] %@",
searchText];
filteredBusinesses = [businesses filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
这是我编辑的多个条件版本.我不确定什么是错的.有任何想法吗?
NSPredicate *p1 = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
NSPredicate *p2 = [NSPredicate predicateWithFormat:@"businessArea contains[c] %@",
searchText];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[p1, p2]];
filteredBusinesses = [businesses filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
小智 17
你可以试试这个
NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[p1, p2]];
Run Code Online (Sandbox Code Playgroud)
除了@Nikunj的答案,你还可以使用NSCompoundPredicate进行这样的AND操作.
Obj-C - AND
NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"X == 1"];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"X == 2"];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[predicate1, predicate2]];
Run Code Online (Sandbox Code Playgroud)
斯威夫特 - 和
let predicate1:NSPredicate = NSPredicate(format: "X == 1")
let predicate2:NSPredicate = NSPredicate(format: "Y == 2")
let predicate:NSPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate1,predicate2] )
Run Code Online (Sandbox Code Playgroud)
斯威夫特3 - 和
let predicate1 = NSPredicate(format: "X == 1")
let predicate2 = NSPredicate(format: "Y == 2")
let predicateCompound = NSCompoundPredicate.init(type: .and, subpredicates: [predicate1,predicate2])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7923 次 |
| 最近记录: |