Swift 领域对象的自定义setter/willSet

Swift 领域对象的自定义setter/willSet,swift,realm,Swift,Realm,每当我设置一个领域对象的属性时,我都希望触发表示远程后端对象的另一个对象的更改 我想知道这是否仍然是推荐的最佳实践: 我想做的事,但不起作用,因为它干扰了领域: dynamic var name: String = "" { willSet(newValue) { self.name = newValue self.widgetRemote?.name = newValue } } 是的,中建议的解决方法仍然是实现这一目标的最佳方法。对于您的情

每当我设置一个领域对象的属性时,我都希望触发表示远程后端对象的另一个对象的更改

我想知道这是否仍然是推荐的最佳实践:

我想做的事,但不起作用,因为它干扰了领域:

dynamic var name: String = "" {
    willSet(newValue) {
        self.name = newValue
        self.widgetRemote?.name = newValue
    }
}

是的,中建议的解决方法仍然是实现这一目标的最佳方法。对于您的情况,您希望执行以下操作:

@objc private dynamic var backingName = ""

var name : String {
    get {
        return backingName
    }
    set(newValue) {
        backingName = newValue
        widgetRemote?.name = newValue
    }
}

override class func ignoredProperties() -> [String] {
    return ["name"]
}

是的,中建议的解决方法仍然是实现这一目标的最佳方法。对于您的情况,您希望执行以下操作:

@objc private dynamic var backingName = ""

var name : String {
    get {
        return backingName
    }
    set(newValue) {
        backingName = newValue
        widgetRemote?.name = newValue
    }
}

override class func ignoredProperties() -> [String] {
    return ["name"]
}

bdash在objc中的版本:

+(NSArray<NSString *> *)ignoredProperties
{
    return @[ @"name" ];
}
+(NSArray*)忽略数据属性
{
返回@[@“name”];
}

请参阅迅速提供的答案,以获取有关备份存储的更多上下文,例如从持久性扩展到领域存储

bdash在objc中的版本:

+(NSArray<NSString *> *)ignoredProperties
{
    return @[ @"name" ];
}
+(NSArray*)忽略数据属性
{
返回@[@“name”];
}

请参阅bdash快速提供的答案,以获取有关支持存储exampt from persistence to realm store的更多上下文

感谢您提供此代码片段,它可能会提供一些即时帮助。一个恰当的解释将通过说明为什么这是一个很好的解决问题的方法来体现它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请编辑您的答案以添加解释,并说明适用的限制和假设。感谢您提供此代码片段,它可能会提供一些即时帮助。一个恰当的解释将通过说明为什么这是一个很好的解决问题的方法来体现它的教育价值,并将使它对未来有类似但不完全相同问题的读者更有用。请编辑您的答案以添加解释,并说明适用的限制和假设。