我正在使用XCode 4& IOS 4.3
LastWorn是coredata模型中的Date属性。 在目标C类中,LastWorn是一个NSDate。 使用objective-c我可以设置和获取coredata数据库的日期ok。 btnSearchOperator包含>或者< datePicker.date是UIDatePicker
的当前选定值我正在尝试使用谓词中的LastWorn日期搜索coredata数据库。 从构建NSPredicate的代码中提取以查询数据
... code not shown ...
if ([txtSearchDate.text length] > 0 )
{
if ([predicate length] != 0) {
[predicate appendString:@" AND "];
}
[predicate appendFormat:@"LastWorn %@ %@", [btnSearchOperator currentTitle], datePickerView.date];
}
以上代码附加'LastWorn> 2011-04-20 14:00:00 +0000'到谓词并崩溃。
控制台日志 2011-04-23 22:34:17.805 iDresser [1216:207] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'无法解析格式字符串“Type.Id == 0 AND Shopping == NO AND(LastWorn> 2011-04-20 14:00:00 +0000)“'
如果我使用F-Script CoreData浏览器工具并构建测试查询,“LastWorn!= nil”会显示正确的结果。
如果我查询“LastWorn> 2011-01”,它显示与LastWorn!= nil相同且不正确。
如果我查询“LastWorn> 2011”,我会收到“NSInvalidArgumentException: - [NSCFNumber timeIntervalSinceReferenceDate]:无法识别的选择器发送到实例0x20048a920”
我只想查找LastWorn日期小于指定值的所有项目? 任何建议将不胜感激。
答案 0 :(得分:2)
我遇到了同样的问题,你需要使用以下方法构建你的谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"LastWorn %@ %@", [btnSearchOperator currentTitle], datePickerView.date]
如果您在字符串中构建谓词然后将其设置为谓词
,则会失败