我有一个由几个属性组成的对象,我想访问一个只是临时值的属性,不需要保存在数据库中。
class Item: Object, Decodable {
@objc dynamic var eid: Int = 0
// ...
var isAccessible: Bool = false
private enum CodingKeys : String, CodingKey {
case eid, isAccessible
}
required convenience init(from decoder:Decoder) throws {
self.init()
let container = try decoder.container(keyedBy: CodingKeys.self)
self.eid = try container.decode(Int.self, forKey: .eid)
self.isAccessible = try container.decodeIfPresent(Bool.self, forKey: .isAccessible) ?? false
}
}
当然,当我保存此对象然后从Realm加载数据时,它不包含isAccessible
。将其更改为@objc dynamic var
后,需要使用write
。问题是它是其他列表中的列表。我还尝试使用.init(value: )
答案 0 :(得分:0)
只要对象存在于内存中,Realm对象的忽略属性才会持久存在。只要将对象保存到Realm,然后检索它,检索到的对象就会与原始对象不同,即使它的所有存储的属性都与原始对象的属性相同。
如果可以确保只在对象的生命周期内需要它们,则应该只使用忽略的属性。在您的情况下,只要您需要访问临时变量的值或将临时变量更改为存储的属性,您就需要增加对象的生命周期以将其保留在内存中。