View refreshing not triggered when ObservableObject is inherited in SwiftUI

后端 未结 3 533
慢半拍i
慢半拍i 2020-12-21 00:44

ContentView2 view is not refreshed when model.value changes, if Model conforms to ObservableObject directly instead of in

3条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-21 01:11

    This really looks like heavy defect.

    class SuperModel: ObservableObject {
    }
    
    class Model: SuperModel {
        @Published var value = ""
    }
    

    as I see the value is changed and keep new one as expected, but DynamicProperty feature does not work

    The following variant works for me (Xcode 11.2 / iOS 13.2)

    class SuperModel: ObservableObject {
        @Published private var stub = "" // << required !!!
    }
    
    class Model: SuperModel {
        @Published var value = "" {
            willSet { self.objectWillChange.send() } // < works only if above
        }
    }
    

    Also such case is possible for consideration:

    class SuperModel {
    }
    
    class Model: SuperModel, ObservableObject {
        @Published var value = ""
    }
    

提交回复
热议问题