【发布时间】:2017-12-13 12:49:52
【问题描述】:
使用NSPredicate 在Core Data 中搜索Transformable 中是否存在数组元素的正确方法是什么?
我有一个Entity 和一个Attribute OperatingDays 和一个Type 的Transformable,它被设置为一个Custom Class [Int]。
我用它来存储整数数组。它可以存储但我在尝试使用 NSPredicate 获取它们时得到EXC_BAD_ACCESS
我知道
operationalDays 是 {1,2,3,4}
我正在尝试,但它们都因错误而失败。
//day is an Int (1) in this case
NSPredicate(format: "%d IN operationalDays",day)
NSPredicate(format: "%i IN operationalDays",day)
NSPredicate(format: "%@ IN operationalDays",day)
NSPredicate(format: "operationalDays CONTAINS %d",day)
NSPredicate(format: "operationalDays CONTAINS %i",day)
NSPredicate(format: "operationalDays CONTAINS %@",day)
当我在崩溃后检查谓词时,我得到
谓词:(1 IN OperatingDays);
或
谓词:(operationalDays CONTAINS 1)
【问题讨论】:
-
不确定我是否记错了,但如果我记错了,那么可转换实际上是二进制数据,可能会被序列化,所以在你的情况下,很可能由一些类似 XML 的格式表示,它有足够的信息来重建你的数组.但就数据库而言,这些是原始二进制数据,您可能不会对它们使用谓词。如果可能,请尝试添加另一个您在其中进行搜索的字符串字段。保存实体时,从您要搜索的所有字段中构造此字符串。
-
是的,我就是这么想的。只是希望 Swift 中有一些魔法来处理这样的 NSPredicates
-
我认为这与
NSPredicate无关,只是SQL 查询失败。但同样,我对其中任何一个都不是 100% 确定,所以也许有人提出了解决方案。
标签: ios swift core-data nspredicate transformable