Skip to content

Commit 157059e

Browse files
committed
Fix PersistentContainerStorage
1 parent feacc6a commit 157059e

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

Sources/CoreDataModel/NSManagedObjectContext.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public final class ManagedObjectViewContext: ViewContext, ObservableObject {
7171
assert(context.concurrencyType == .mainQueueConcurrencyType)
7272
}
7373

74-
public nonisolated init(persistentContainer: NSPersistentContainer) {
74+
public init(persistentContainer: NSPersistentContainer) {
7575
self.context = persistentContainer.viewContext
7676
}
7777

Sources/CoreDataModel/NSPersistentContainer.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,20 +75,27 @@ public actor PersistentContainerStorage: ModelStorage, ObservableObject {
7575
managedObjectModel: managedObjectModel
7676
)
7777
self.persistentContainer = persistentContainer
78-
self._viewContext = ManagedObjectViewContext(persistentContainer: persistentContainer)
7978
}
8079

8180
// MARK: Properties
8281

8382
internal let persistentContainer: NSPersistentContainer
8483

85-
internal let _viewContext: ManagedObjectViewContext
84+
internal nonisolated(unsafe) var _viewContext: ManagedObjectViewContext?
8685

8786
@MainActor
8887
public var viewContext: ManagedObjectViewContext {
8988
get throws {
89+
// lazily load stores
9090
try loadStores()
91-
return _viewContext
91+
// lazily load view context
92+
if let viewConext = _viewContext {
93+
return viewConext
94+
} else {
95+
let viewContext = ManagedObjectViewContext(persistentContainer: persistentContainer)
96+
_viewContext = viewContext
97+
return viewContext
98+
}
9299
}
93100
}
94101

0 commit comments

Comments
 (0)