SwiftUI / Combine无法使用ObservedObject初始化类

时间:2020-07-08 01:09:54

标签: ios xcode swiftui

我正在为看起来像是对ObservedObject的简单引用的问题而苦苦挣扎。 这个SwiftUI应用程序具有视图模型,并且具有用于从远程捕获数据的数据存储。 资源。这两个文件都是类。两者都符合ObservableObject。

问题是当尝试引用模型中的数据存储时,我无法获取 除非我引用数据存储的全新实例,否则该类初始化程序将起作用。

骨骼:

class DataStore: ObservableObject {

    @Environment(\.managedObjectContext) var managedObjectContext

    //bunch of publishers and published properties

    init() {
        getTopLevel()
    }

    func getTopLevel() {
    ...
    }
}

和视图模型:

final class ChatViewModel: NSObject, ObservableObject {

    let kAppDelegate = UIApplication.shared.delegate as! AppDelegate
    //bunch of properties

    lazy var session: MCSession = {
        let session = MCSession(peer: peerID, securityIdentity: nil, encryptionPreference: .none)
        session.delegate = self
        return session
    }()

    @ObservedObject var dataStore: DataStore

    override init() {
        self.dataStore = DataStore() // this is the issue
        super.init()

        //some notification center publishers for keyboard movement
    }
    //bunch of methods
}

如果删除self.dataStore = DataStore()行,则会收到错误消息: 属性“ self.dataStore”未在super.init调用中初始化

当然,如果我将其保留,则它是一个新的DataStore,对我没有好处。我必须 这里缺少一些非常基本的东西。

Xcode 11.5 iOS 13.5

任何指导将不胜感激。

0 个答案:

没有答案