【问题标题】:Fetch request not working in Swift 4.1 [duplicate]获取请求在 Swift 4.1 中不起作用 [重复]
【发布时间】:2018-07-11 06:14:35
【问题描述】:

我有一个 Bool 谓词设置为 false(大部分情况下)。当我昨天升级时,它在 Swift 4.1 中停止正常工作。

谓词是:

requestData.predicate = NSPredicate(format: "delete == %@", false as CVarArg);

如何在 Core Data 存储中检查此值是否为 false?谢谢。

【问题讨论】:

    标签: swift core-data swift4 swift4.1


    【解决方案1】:

    占位符%@ 用于对象,Bool 的占位符是%d

    但是,如果参数是常量,则语法更简单

    requestData.predicate = NSPredicate(format: "delete == FALSE")
    

    【讨论】:

    【解决方案2】:

    你应该让你的谓词使用:

    requestData.predicate = NSPredicate(format: "delete == NO")
    

    不幸的是,我无法告诉您为什么您使用 CVarArg 的示例停止工作 - 但由于您的示例中不需要它,我会尝试使用带有可选 argumentArray 参数的其他初始化程序:init(format:argumentArray:)


    The documentation布尔值 部分中说:

    您指定并测试布尔值的相等性,如以下示例所示:

    NSPredicate *newPredicate =
        [NSPredicate predicateWithFormat:@"anAttribute == %@", [NSNumber numberWithBool:aBool]];
    NSPredicate *testForTrue =
        [NSPredicate predicateWithFormat:@"anAttribute == YES"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2020-06-18
      相关资源
      最近更新 更多