以下兩個有什么不同嗎?
使用
@Environment(\.managedObjectContext) private var mocPersistentController.shared.container.viewContext當PersistentController.shared是一個實體時呼叫static let,即static let shared = PersistenceController()
據我目前的理解,它static let意味著整個應用程式中的一個也是唯一的實體,這與單例幾乎相同。
在我的視圖模型中,我目前傳入moc承包商以供以后使用,例如(我將呼叫.init(moc)where mocfrom from@Environment(\.managedObjectContext))
init(moc: NSManagedObjectContext) {
self.moc = moc
//the rest are omitted but you get the idea...
}
我想知道我是否可以使用static let像這樣的實體來簡化它
init() {
self.moc = PersistenceController.shared.container.viewContext
}
uj5u.com熱心網友回復:
通常,您應該始終注入依賴項,并且永遠不要直接訪問靜態/全域變數。
這消除了代碼庫不同物體之間的隱藏依賴和緊密耦合,也使單元測驗更加容易。
直接訪問單例/靜態實體似乎更容易,但是,它會使代碼的可測驗性和維護變得更加困難。
uj5u.com熱心網友回復:
@Environment(\.managedObjectContext)是必需的@FetchRequest。它還允許我們提供加載了示例資料的不同背景關系以進行預覽,例如
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/529565.html
標籤:迅速迅捷核心数据
上一篇:可本地化的字串插值不能按預期作業
