소스 검색

Implement initial store-migration functionality

pull/195/head
Angelo Stavrow 2 년 전
부모
커밋
f55ae3c621
No known key found for this signature in database GPG 키 ID: 1A49C7064E060EEE
1개의 변경된 파일34개의 추가작업 그리고 0개의 파일을 삭제
  1. +34
    -0
      Shared/LocalStorageManager.swift

+ 34
- 0
Shared/LocalStorageManager.swift 파일 보기

@@ -10,6 +10,17 @@ final class LocalStorageManager {
public static var standard = LocalStorageManager()
public let container: NSPersistentContainer

private var oldStoreURL: URL {
let appSupport = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
return appSupport.appendingPathComponent("LocalStorageModel.sqlite")
}

private var sharedStoreURL: URL {
let id = "group.com.abunchtell.writefreely"
let groupContainer = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: id)!
return groupContainer.appendingPathComponent("LocalStorageModel.sqlite")
}

init() {
// Set up the persistent container.
container = NSPersistentContainer(name: "LocalStorageModel")
@@ -56,6 +67,29 @@ final class LocalStorageManager {
print("Error: Failed to purge cached collections.")
}
}

func migrateStore(for container: NSPersistentContainer) {
let coordinator = container.persistentStoreCoordinator

guard let oldStore = coordinator.persistentStore(for: oldStoreURL) else {
return
}

do {
try coordinator.migratePersistentStore(oldStore,
to: sharedStoreURL,
options: nil,
withType: NSSQLiteStoreType)
} catch {
fatalError("Something went wrong migrating the store: \(error)")
}

do {
try FileManager.default.removeItem(at: oldStoreURL)
} catch {
fatalError("Something went wrong while deleting the old store: \(error)")
}
}
}

private extension LocalStorageManager {


불러오는 중...
취소
저장