【问题标题】:NSFetchRequest from Template - Xcode 5 Editor Rewrites Expression来自模板的 NSFetchRequest - Xcode 5 编辑器重写表达式
【发布时间】:2014-01-10 16:35:41
【问题描述】:

我正在尝试为具有 nil whenRead 日期属性和具有给定 userID 的收件人的 MyMessage 对象创建提取请求模板。但是,当我尝试在 Xcode 5 获取请求编辑器中创建这样的表达式时,它会从以下转换我的表达式:

对此(使用当前日期作为值):

在我点击离开并再次选择请求选项卡后。

还有其他人遇到过这个问题吗?这是 Xcode 5 的错误,还是我在这里遗漏了什么?

whenRead 属性被标记为可选并具有日期类型。)

编辑:

我应该补充一点,当我以编程方式创建这个谓词时,它工作得很好。

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Message"];
[request setPredicate:[NSPredicate predicateWithFormat:@"recipient.userID == %@ AND whenRead == %@", userID, [NSNull null]]];

【问题讨论】:

  • 不确定,但我建议在谓词编辑器中尝试“0”而不是“nil”。
  • 使用“0”具有相同的效果。保留这两个子句,然后添加一个“0”,将之前的 whenRead 子句更改为“不是”,并添加一个新的“is”子句(都包含今天的日期)。
  • FWIW 我已将此作为一个错误提交,它也可以在 Open Radar 中找到:openradar.me/16037400
  • 太棒了,我一直想这样做,但一直没有解决。谢谢!

标签: ios objective-c xcode core-data xcode5


【解决方案1】:

我认为您可能在 IB 中遇到了限制。应用启动时,使用 NSManagedObjectModel 的以下方法定义获取请求模板:

setFetchRequestTemplate:forName:

这仍然为您提供了获取模板的速度,但也提供了设置 nil 相等性的能力。我也会就此提交雷达; IB 绝对应该允许 nil 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2018-01-02
    • 2012-09-14
    • 2023-03-13
    相关资源
    最近更新 更多