2011-04-24 54 views
1

我使用的XCode 4 & IOS 4.3Coredata NSPredicate按日期

LastWorn处于coredata模型中的日期属性。 在目标C类中,LastWorn是NSDate。 使用objective-c我可以设置并从coredata数据库中获取日期。 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和购物== NO AND(LastWorn> 2011-04-20 14:00:00 +0000)“”

如果我用的是F-脚本CoreData浏览器工具,并建立一个测试查询“LastWorn!=零“显示正确的结果。

如果查询“LastWorn> 2011-01”,它显示与LastWorn!= nil相同并且不正确。

如果我查询“LastWorn> 2011”我得到“NSInvalidArgumentException: - [NSCFNumber timeIntervalSinceReferenceDate]:无法识别的选择发送到实例0x20048a920”

我只是想找到一个LastWorn日期的所有项目低于指定值? 任何建议,将不胜感激。

回答

2

我遇到了同样的问题,则需要使用构建谓词:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"LastWorn %@ %@", [btnSearchOperator currentTitle], datePickerView.date] 

,如果你建立你的断言在一个字符串,然后将其设置为谓语

+0

那固定的失败。 Thankyou花时间回答我的问题。 – user722361 2011-05-10 20:46:59