Swift 型号';s忽略的属性似乎没有使用init(值:Any)设置
我面临一个无法通过Swift 型号';s忽略的属性似乎没有使用init(值:Any)设置,swift,realm,Swift,Realm,我面临一个无法通过init(value:Any)设置忽略属性的问题。我理解被忽略属性的方式是,它们存在于对象的实例中,一旦对象被持久化到领域,它们就会被忽略,但在初始化过程中它们似乎已经被忽略了 例如: 型号: class Image: Object { dynamic var main = false dynamic var image: UIImage? override static func ignoredProperties() -> [String]
init(value:Any)
设置忽略属性的问题。我理解被忽略属性的方式是,它们存在于对象的实例中,一旦对象被持久化到领域
,它们就会被忽略,但在初始化过程中它们似乎已经被忽略了
例如:
型号:
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
我无法在init(value:Any)中设置它,这有点烦人,因此我想知道这是一个预期行为还是我做错了什么。这是当前预期的行为。
Object.init(值:)
初始值设定项目前只考虑持久化属性的键
解决方案是您可以定义自定义初始值设定项,如init(main:Bool,image:UIImage?
)
然后您可以按如下方式使用它:
let img = Image(main: imageSlot.imageInfo.main, image: imageSlot.imageInfo.image)
这是当前的预期行为。
Object.init(值:)
初始值设定项目前只考虑持久化属性的键
解决方案是您可以定义自定义初始值设定项,如init(main:Bool,image:UIImage?
)
然后您可以按如下方式使用它:
let img = Image(main: imageSlot.imageInfo.main, image: imageSlot.imageInfo.image)
是的,您可以在初始值设定项中进行设置。给我们看看你写的初始值设定项,这样我们就可以看到哪里出了问题。这应该很容易解决kye为您提供了一个非常好的解决方案。@Mozahler您所指的答案实际上是错误的,已被作者删除。OP使用的是
Realm
使用的默认初始值设定项,它不是OP编写的自定义初始值设定项。我知道OP没有使用自定义初始值设定项。我认为这是必要的。这就是为什么我要求他提供代码。谢谢你的更新。是的,你可以在初始化器中设置它。给我们看看你写的初始值设定项,这样我们就可以看到哪里出了问题。这应该很容易解决kye为您提供了一个非常好的解决方案。@Mozahler您所指的答案实际上是错误的,已被作者删除。OP使用的是Realm
使用的默认初始值设定项,它不是OP编写的自定义初始值设定项。我知道OP没有使用自定义初始值设定项。我认为这是必要的。这就是为什么我要求他提供代码。谢谢你的更新。