【发布时间】:2015-09-24 15:19:53
【问题描述】:
我最近阅读了有关 NSPredicate 中的转换工作原理的文章,我正在尝试在我的FetchResultController 中使用一个。结果出乎意料:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“未实现的 SQL 生成 对于谓词:(CAST(orderNumber, "NSString") CONTAINS[cd] "%1$@") (坏 RHS)'
orderNumber 是 NSNumber。它包含从服务器获取的自动生成的 id。我不确定我是否可以在FetchResultController 中使用 CAST,因为 SO 中的一些答案说它可以在普通 NSArray 中使用 CAST。
这是我的代码:
NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"localOrderId contains[cd] '%1$@' "
"OR customerName contains[cd] '%1$@' "
"OR (CAST(orderNumber, 'NSString') contains[cd] '%1$@') ", keySearch];
[_fetchedResultsController.fetchRequest setPredicate:searchPredicate];
NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) { // << Die here
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
}
【问题讨论】:
标签: ios objective-c casting nspredicate nsfetchedresultscontroller