【问题标题】:Coredata NSPredicate by dateCoredata NSPredicate 按日期
【发布时间】:2011-04-24 05:27:41
【问题描述】:

我正在使用 XCode 4 和 IOS 4.3

LastWorn 是核心数据模型中的日期属性。 在目标 C 类中,LastWorn 是一个 NSDate。 使用objective-c,我可以设置和获取coredata数据库的日期。 btnSearchOperator 包含 > 或

我正在尝试使用谓词中的 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 购物 == 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]: unrecognized selector sent to instance 0x20048a920”

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

【问题讨论】:

    标签: ios4


    【解决方案1】:

    我遇到了同样的问题,您需要使用以下方法构建您的谓词:

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

    如果您在字符串中构建谓词然后将其设置为谓词,则会失败

    【讨论】:

    • 修复了它。感谢您花时间回答我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    相关资源
    最近更新 更多