gpt4 book ai didi

iphone - 从字符串创建 NSPredicate

转载 作者:行者123 更新时间:2023-12-03 19:03:58 27 4
gpt4 key购买 nike

我需要从多个值数组形成一个谓词。所以我想我可以最初形成一个包含所有值的字符串,然后传递该字符串以在谓词中使用,即

NSString* stringForPredicate  = [[NSString alloc] init];
if (fromDate != nil) {
stringForPredicate = [stringForPredicate stringByAppendingFormat:@"(Date > %@ AND Date < %@)", fromDate, toDate];
}

我还进行了进一步的计算来形成最终的谓词字符串。

现在,我希望谓词使用这个字符串。我认为这样的事情会起作用:

   NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:@"%@",stringForPredicate];

但它没有并抛出异常:

'无法解析格式字符串“%@”'

有什么办法可以让我完成这项工作吗?

谢谢

最佳答案

stringForPredicate变量实际上包含format_string。因此,您需要分配该变量来代替 format_string,并在其后传递 args,用逗号分隔,如下所示。

NSSring *stringForPredicate = @"(Date > %@ AND Date < %@)";
NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:stringForPredicate, fromDate, toDate];
<小时/>

对于复合谓词:

NSMutableArray *subPredicates = [NSMutableArray array];

if (fromDate != nil) {

NSPredicate *from_predicate = [NSPredicate predicateWithFormat:@"Date > %@", fromDate];
[subPredicates addObject:from_predicate];
}

if (toDate != nil) {

NSPredicate *to_predicate = [NSPredicate predicateWithFormat:@"Date < %@", toDate];
[subPredicates addObject:to_predicate];
}

NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates];

关于iphone - 从字符串创建 NSPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5908865/

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