gpt4 book ai didi

objective-c - NSPredicate 对一个查询字符串进行多次比较

转载 作者:可可西里 更新时间:2023-11-01 17:11:03 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以简化 NSPredicate,该 NSPredicate 为多个比较目标采用单个查询字符串。我正在为同一查询字符串搜索核心数据实体的多个属性。我当前的查询看起来像这样......

[NSPredicate predicateWithFormat:@"(attributeA contains[cd] %@) OR (attributeB contains[cd] %@) OR (attributeC contains[cd] %@)", searchString, searchString, searchString];

请注意,这非常有效,但看起来确实有点难看。特别是 searchString, searchString, searchString 部分。任何关于我如何简化这个的提示都会很棒!

谢谢!

最佳答案

您可以像这样使用 NSCompoundPredicate 进行 OR & AND 操作。

Obj-C - 或者

// OR Condition //

NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"X == 1"];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"X == 2"];
NSPredicate *predicate = [NSCompoundPredicate orPredicateWithSubpredicates:@[predicate1, predicate2]];

Obj-C - 和

NSPredicate *predicate1 = [NSPredicate predicateWithFormat:@"X == 1"];
NSPredicate *predicate2 = [NSPredicate predicateWithFormat:@"X == 2"];
NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[predicate1, predicate2]];

Swift - 或者

let predicate1:NSPredicate = NSPredicate(format: "X == 1")
let predicate2:NSPredicate = NSPredicate(format: "Y == 2")
let predicate:NSPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: [predicate1,predicate2] )

Swift - 和

let predicate1:NSPredicate = NSPredicate(format: "X == 1")
let predicate2:NSPredicate = NSPredicate(format: "Y == 2")
let predicate:NSPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate1,predicate2] )

Swift 3 - 或者

    let predicate1 = NSPredicate(format: "X == 1")
let predicate2 = NSPredicate(format: "Y == 2")
let predicateCompound = NSCompoundPredicate.init(type: .or, subpredicates: [predicate1,predicate2])

Swift 3 - 和

    let predicate1 = NSPredicate(format: "X == 1")
let predicate2 = NSPredicate(format: "Y == 2")
let predicateCompound = NSCompoundPredicate.init(type: .and, subpredicates: [predicate1,predicate2])

关于objective-c - NSPredicate 对一个查询字符串进行多次比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7536750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com