2017-12-26 9 views
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 가게의 이름을 알려 주어야합니까?

답변

1

영구 저장소 파일에는 유효한 파일 이름을 사용할 수 있습니다. 핵심 데이터에는 파일 이름에 대한 규칙이 없습니다.

NSPersistentContainer은 기본 파일 이름을 사용하지만이를 변경할 수 있습니다. persistentStoreDescriptions 속성을 사용하면 영구 저장소 파일의 URL을 비롯한 다양한 세부 정보를 지정할 수 있습니다.

+0

Tom Harrington 저는 이미 당신의 도움으로이 작업을 수행했습니다! 고맙습니다!!! –