use*_*584 4 string iphone nspredicate
我需要从多个值数组中形成一个谓词.所以我认为我最初可以形成一个包含所有值的字符串,然后传递该字符串以在谓词中使用,即
NSString* stringForPredicate = [[NSString alloc] init];
if (fromDate != nil) {
stringForPredicate = [stringForPredicate stringByAppendingFormat:@"(Date > %@ AND Date < %@)", fromDate, toDate];
}
Run Code Online (Sandbox Code Playgroud)
我还有进一步的计算来形成最终的谓词字符串.
现在,我希望谓词使用此字符串.我认为像这样的东西会起作用:
NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:@"%@",stringForPredicate];
Run Code Online (Sandbox Code Playgroud)
但它没有并抛出异常:
'无法解析格式字符串"%@"'
有没有办法让这项工作成功?
谢谢,
Emp*_*ack 15
该stringForPredicate变量实际上包含了FORMAT_STRING.因此,您需要分配该变量来代替format_string,并在此之后传递args,用逗号分隔,就像这样.
NSSring *stringForPredicate = @"(Date > %@ AND Date < %@)";
NSPredicate* filterPredicate = [NSPredicate predicateWithFormat:stringForPredicate, fromDate, toDate];
Run Code Online (Sandbox Code Playgroud)
对于复合谓词:
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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5121 次 |
| 最近记录: |