【发布时间】:2018-05-06 09:06:32
【问题描述】:
我们必须在 Realm 中存储具有字符串字段数组的元素。
为此,我们必须实施一些小变通方法:
class RealmString: Object {
@objc dynamic var value = ""
override init(value: Any) {
super.init(value: [value])
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
super.init(realm: realm, schema: schema)
}
required init() {
super.init()
}
required init(value: Any, schema: RLMSchema) {
super.init(value: [value], schema: schema)
}
}
class Realm2Element: Object {
let tags = List<RealmString>()
}
结果:
- CONTAINS ALL OF 条件如下所示:
ANY tags.value == "tag0" AND ANY tags.value == "tag1" AND ANY tags.value == "tag2"
- CONTAINS ANY OF 条件如下所示:
ANY tags.value IN {"tag0", "tag1", "tag2"}
Realm3 支持原语数组。我们从条件中删除了.value keyPath。但是在为Realm3Element 应用这些过滤器时出现错误:
class Realm3Element: Object {
let tags = List<String>()
}
对于CONTAINS ALL OF条件:
'Invalid value', reason: 'Expected object of type (null) for property 'tags' on object of type 'Realm3Element', but received: tag0'
对于CONTAINS ANY OF条件:
'Expected object of type (null) in IN clause for property 'tags' on object of type 'Realm3Element', but received: tag0'
我们遍历了所有可能的变化,但找不到任何解决方案。
Realm3 是否支持按基元数组进行过滤?
【问题讨论】:
-
Does Realm3 support filtering by array of primitives field?还没有,我希望它会在 3 个月前的某个时候出现,但不幸的是我看到这方面的进展为零。
标签: swift realm nspredicate