代码之家  ›  专栏  ›  技术社区  ›  cdub

提取请求在SWIFT 4.1中不起作用[副本]

  •  0
  • cdub  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有一个谓词是bool设置为false(主要是)。当我昨天升级时,它在swift 4.1中停止了正常工作。

    谓词是:

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

    如何在核心数据存储中检查此值是否为false?谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   vadian    6 年前

    占位符 %@ 对于对象,占位符为 Bool %d

    但是,如果参数是常量,则有一个更简单的语法

    requestData.predicate = NSPredicate(format: "delete == FALSE")
    
        2
  •  0
  •   d.felber    6 年前

    您应该使用以下方法来使用谓词:

    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"];