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没有使用自定义初始值设定项。我认为这是必要的。这就是为什么我要求他提供代码。谢谢你的更新。