From 0585d04ba69752b3abf50c1f3f8bd0755f6cbdbb Mon Sep 17 00:00:00 2001 From: Matt Czech Date: Thu, 16 Jan 2025 13:08:22 -0600 Subject: [PATCH] Fix CoreData test warnings (#1276) --- .../Core/Platform/Services/Stores/DataStore.swift | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/BitwardenShared/Core/Platform/Services/Stores/DataStore.swift b/BitwardenShared/Core/Platform/Services/Stores/DataStore.swift index 73c18f6ba..1b22c5460 100644 --- a/BitwardenShared/Core/Platform/Services/Stores/DataStore.swift +++ b/BitwardenShared/Core/Platform/Services/Stores/DataStore.swift @@ -19,6 +19,17 @@ enum StoreType { /// A data store that manages persisting data across app launches in Core Data. /// class DataStore { + // MARK: Type Properties + + /// The managed object model representing the entities in the database schema. CoreData throws + /// warnings if this is instantiated multiple times (e.g. in tests), which is fixed by making + /// it static. + private static let managedObjectModel: NSManagedObjectModel = { + let modelURL = Bundle(for: DataStore.self).url(forResource: "Bitwarden", withExtension: "momd")! + let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL)! + return managedObjectModel + }() + // MARK: Properties /// A managed object context which executes on a background queue. @@ -45,9 +56,7 @@ class DataStore { init(errorReporter: ErrorReporter, storeType: StoreType = .persisted) { self.errorReporter = errorReporter - let modelURL = Bundle(for: type(of: self)).url(forResource: "Bitwarden", withExtension: "momd")! - let managedObjectModel = NSManagedObjectModel(contentsOf: modelURL)! - persistentContainer = NSPersistentContainer(name: "Bitwarden", managedObjectModel: managedObjectModel) + persistentContainer = NSPersistentContainer(name: "Bitwarden", managedObjectModel: Self.managedObjectModel) let storeDescription: NSPersistentStoreDescription switch storeType { case .memory: