我遇到的问题是我无法通过Realm
设置被忽略的属性。我理解忽略属性的方式是它们存在于Object的实例中,一旦对象持久保存到class Image: Object {
dynamic var main = false
dynamic var image: UIImage?
override static func ignoredProperties() -> [String] {
return ["image"]
}
}
,它们将被忽略,但似乎它们在初始化期间已被忽略。
示例:
模型:
let img = Image(value: [PROPERTY.MAIN: imageSlot.imageInfo.main, PROPERTY.IMAGE: imageSlot.imageInfo.image])
img.image // NIL HERE
let img = Image(value: [PROPERTY.MAIN: imageSlot.imageInfo.main])
img.image = imageSlot.imageInfo.image
img.image // CORRECTLY SET
用法:
{{1}}
有点烦人的是我不能在init(值:Any)中设置它,因此我想知道这是出于预期的行为还是我做错了。
答案 0 :(得分:0)
这是目前的行为。 Object.init(value:)
初始值设定项目前仅考虑持久属性的键。
https://github.com/realm/realm-cocoa/issues/3495
解决方案是您可以定义自定义初始值设定项,如init(main: Bool, image: UIImage?)
。
class Image: Object {
dynamic var main = false
dynamic var image: UIImage?
convenience init(main: Bool, image: UIImage?) {
self.init()
self.main = main
self.image = image
}
override static func ignoredProperties() -> [String] {
return ["image"]
}
}
然后您可以像下面那样使用它:
let img = Image(main: imageSlot.imageInfo.main, image: imageSlot.imageInfo.image)