首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode9.3- NSPredicate Bool崩溃

Xcode9.3- NSPredicate Bool崩溃
EN

Stack Overflow用户
提问于 2018-05-17 18:24:51
回答 3查看 908关注 0票数 1

在Xcode9.3更新之后,我注意到如果你想要像这样的谓词:

代码语言:javascript
复制
let predicate = NSPredicate(format: "preferred = %@", true as CVarArg)

你出车祸了。但在Xcode9.2中,这不是问题。有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2018-05-17 18:42:17

//解决方案3[ Apple Documentation ]

代码语言:javascript
复制
let predicate = NSPredicate(format: "preferred == TRUE")

因为true不是一个对象(%@),所以会发生异常。您需要%d占位符

代码语言:javascript
复制
let predicate = NSPredicate(format: "preferred = %d", true)
票数 6
EN

Stack Overflow用户

发布于 2018-05-17 18:24:51

经过一些调查,我发现了如何解决这个问题。简而言之:

代码语言:javascript
复制
// Solution 1 [ NSNumber ]
let bool = NSNumber(booleanLiteral: true)
let predicate = NSPredicate(format: "preferred = %@", bool as CVarArg)

// Solution 2 [ Bool ] (static example)
let predicate = NSPredicate(format: "preferred == YES")

正如here所解释的,当我们必须处理这类方法时,最好使用Obj-C类型,而不是Swift类型。

票数 0
EN

Stack Overflow用户

发布于 2018-05-17 18:27:50

我认为你也可以使用这个:

代码语言:javascript
复制
NSPredicate(format: "preferred = true")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50389112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档