【发布时间】:2015-07-15 13:40:18
【问题描述】:
由于 Realm 不支持不是 Object 子类的可选项,我正在尝试将字符串包装到 StringObject:
final class StringObject: Object {
dynamic var value: String = ""
convenience init?(_ value: String?) {
self.init()
if let value = value {
self.value = value
} else {
return nil
}
}
}
并像这样使用它:
final class Person: Object {
dynamic var firstName: String = ""
dynamic var lastName: StringObject? // can be optional
}
但是这种解决方案有一个讨厌的副作用:由于StringOptional 的值将存储在数据库中自己的表中,因此每次创建StringObject 时都会有无数重复值。我尝试将StringObject 的value 设为主键,但在创建Person 对象时收到错误消息:
无法将主键属性“lastName”设置为现有值“Doe”
这意味着 Realm 在内部不会更新关系。
有没有更好的方法来存储选项?
【问题讨论】: