Swift 4.2 iOS 11.x
尝试读取 iCloud 数据库中设置了 lineOwner 字段的记录,但很难创建一个有效的 NSPredicate!
这看起来不错,但无法解析。
let predicate = NSPredicate(format: remoteAttributes.lineOwner + " != %@",0)
我收到一条无效谓词错误消息[以及一次令人讨厌的交易失败]。花几个小时在这上面,失去了生存的意愿。
如果我打印出数据库,我会看到这一点。
最佳答案
您可以简单地与空的String
、""
进行比较。 %@
占位符表示 String
,因此发生崩溃是因为您向 NSPredicate
提供了 Int
而不是一个字符串
。
您还应该使用 %K
占位符作为变量名称,而不是附加字符串。
let predicate = NSPredicate(format: " %K != %@", remoteAttributes.lineOwner, "")
如果您还想过滤掉 nil
值,可以使用复合谓词:
let predicate = NSPredicate(format: " %K != %@ AND %K != nil", remoteAttributes.lineOwner, "")
关于swift - swift 中的 NSPredicate 用于空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558121/