【发布时间】:2015-12-11 19:26:34
【问题描述】:
我想知道有没有办法构建谓词并动态指定要使用的比较器?例如我试过这个,但它崩溃了:
NSPredicate *validPredicate = [NSPredicate predicateWithFormat:@"%K %@ %@", NSStringFromSelector(@selector(expirationDate)), isValid ? @"<" : @">",[NSDate date]];
但如果我在字符串中硬编码比较器,它不会崩溃:
NSPredicate *validPredicate = [NSPredicate predicateWithFormat:@"%K < %@", NSStringFromSelector(@selector(expirationDate)), [NSDate date]];
有没有比这样做更好的方法:
NSPredicate * validPredicate = nil;
if (isValid) {
validPredicate = [NSPredicate predicateWithFormat:@"%K > %@", NSStringFromSelector(@selector(expirationDate)), [NSDate date]];
} else {
validPredicate = [NSPredicate predicateWithFormat:@"%K < %@", NSStringFromSelector(@selector(expirationDate)), [NSDate date]];
}
【问题讨论】:
标签: ios nspredicate comparator