gpt4 book ai didi

ios - Objective-C 中具有多个可选值的 NSCompoundPredicate 的 NSArray

转载 作者:行者123 更新时间:2023-11-29 00:09:00 24 4
gpt4 key购买 nike

我有一个带有基本谓词“pred”和一个可选谓词“fieldQuery”的 CoreData 查询

NSArray *predArray = (fieldQuery != nil) ? @[pred, rangeQuery, fieldQuery] : @[pred,rangeQuery];

我想允许“fieldQuery”和“rangeQuery”都是可选的。我让它像这样工作:

NSArray *predArray;

if (rangeQuery != nil) {
predArray = (fieldQuery != nil) ? @[pred, rangeQuery, fieldQuery] : @[pred,rangeQuery];
} else {
predArray = (fieldQuery != nil) ? @[pred, fieldQuery] : @[pred];
}

NSPredicate *compoundPred = [NSCompoundPredicate andPredicateWithSubpredicates:predArray];

但这并不干净,简洁明了,这样做是因为数组需要是 NSArray 而不是 NSMutable 数组。你能建议一个更好的方法吗?

最佳答案

您可以尝试下面的代码片段。

NSArray *predArray = @[pred]; // considering pred is non optional.
if (rangeQuery!=nil)
predArray = [predArray arrayByAddingObject:rangeQuery];
if (fieldQuery!=nil)
predArray = [predArray arrayByAddingObject:fieldQuery];

考虑到 pred 总是非空的,并且总是在 predArray 中。

关于ios - Objective-C 中具有多个可选值的 NSCompoundPredicate 的 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47143967/

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