swift - swift 中的 NSPredicate 用于空字符串

标签 swift nspredicate

Swift 4.2 iOS 11.x

尝试读取 iCloud 数据库中设置了 lineOwner 字段的记录,但很难创建一个有效的 NSPredicate!

这看起来不错,但无法解析。

let predicate = NSPredicate(format: remoteAttributes.lineOwner + " != %@",0)

我收到一条无效谓词错误消息[以及一次令人讨厌的交易失败]。花几个小时在这上面,失去了生存的意愿。

如果我打印出数据库,我会看到这一点。

enter image description here

最佳答案

您可以简单地与空的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/

相关文章:

json - 解码 JSON 时出错 - keyNotFound(CodingKeys

ios - Eroor 将 NSPredicate 与 Swift "Could not find an overload for ' init 中的 block 一起使用,它接受提供的参数”

swift - 关系属性的核心数据获取请求

ios - 核心数据 : filter many to may relationship with NSPredicate

iphone - 搜索 NSArray 包含 NSDictionary,值为 "time efficiency"

ios - 将 mysql 查询转移到 NSPredicate

ios - 除非缓存图像,否则 TableView 单元格的格式不正确

swift - Swift 中的错误 "Trailing closure passed to parameter of type ' NSManagedObjectContext' 不接受闭包

ios - swift iOS9 : How to recognize a click on the X button of the UISearchBar

ios - 在自定义 UIViewController 转换期间隐藏状态栏