我正在为看起来像是对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
任何指导将不胜感激。