0
.sqlite 데이터베이스 파일을 미리 프로젝트로 가져 와서 CoreDataStack을 생성하고 있습니다..sqlite 영구 저장소의 이름을 어떻게 가져올 수 있습니까?
func seedCoreDataContainerIfFirstLaunch() {
//1
let previouslyLaunched = UserDefaults.standard.bool(forKey: "previouslyLaunched")
if !previouslyLaunched {
UserDefaults.standard.set(true, forKey: "previouslyLaunched")
// Default directory where the CoreDataStore will store its files.
let directory = NSPersistentContainer.defaultDirectoryURL()
let url = directory.appendingPathComponent(modelName + ".sqlite")
//2: Copying the SQLite file
let seedDatabaseURL = Bundle.main.url(forResource: modelName , withExtension: "sqlite")!
print(seedDatabaseURL)
_ = try? FileManager.default.removeItem(at: url)
do {
try FileManager.default.copyItem(at: seedDatabaseURL, to: url)
} catch let nserror as NSError {
fatalError("Error: \(nserror), \(nserror.localizedDescription)")
}
// 3: Copying the SHM file
let seededSHMURL = Bundle.main.url(forResource: modelName , withExtension: "sqlite-shm")!
let shmURL = directory.appendingPathComponent(modelName + ".sqlite-shm")
_ = try? FileManager.default.removeItem(at: shmURL)
do {
try FileManager.default.copyItem(at: seededSHMURL, to: shmURL)
} catch let nserror as NSError {
fatalError("Error: \(nserror.localizedDescription)")
}
// 4: Copying the WAL file
let seededWALURL = Bundle.main.url(forResource: modelName , withExtension: "sqlite-wal")
let walURL = directory.appendingPathComponent(modelName + ".sqlite-wal")
_ = try? FileManager.default.removeItem(at: walURL)
do {
try FileManager.default.copyItem(at: seededWALURL!, to: walURL)
} catch let nserror as NSError {
fatalError("Error: \(nserror.localizedDescription)")
}
print("Seeded Core Data")
}
}
그리고 내 xcdatamodeled 파일의 이름과 동일한 영구 저장소 이름을 지정해야합니까? 내가해야만한다면 어떻게 내 secodpersistence 가게의 이름을 알려 주어야합니까?
Tom Harrington 저는 이미 당신의 도움으로이 작업을 수행했습니다! 고맙습니다!!! –