iOS: How can I create a backup copy of my core data base? And how to export/import that copy?

前端 未结 3 1797
盖世英雄少女心
盖世英雄少女心 2021-01-31 12:42

I want to offer the users of my app the possibility to create a backup of the core data database, especially in case he switches to a new device etc.

How would I do that

3条回答
  •  余生分开走
    2021-01-31 13:18

    I created the following method with the help of Apple sample code. This will take a backup of core data files and place it to the path that you want.

    Swift 5

    /// Backing up store type to a new and unique location
    /// The method is illustrated in the following code fragment, which shows how you can use migratePersistentStore to take a back up of a store and save it from one location to another.
    /// If the old store type is XML, the example also converts the store to SQLite.
    /// - Parameters:
    ///   - path: Where you want the backup to be done, please create a new unique directory with timestamp or the guid
    ///   - completion: Passes error in case of error or pass nil in case of success
    class func backUpCoreDataFiles(path : URL, completion : @escaping (_ error : String?) -> ())
    {
    
        // Every time new container is a must as migratePersistentStore method will loose the reference to the container on migration
        let container = NSPersistentContainer(name : "")
        container.loadPersistentStores
            { (storeDescription, error) in
                if let error = error
                {
                    fatalError("Failed to load store: \(error)")
                }
        }
        let coordinator = container.persistentStoreCoordinator
        let store = coordinator.persistentStores[0]
        do
        {
            try coordinator.migratePersistentStore(store, to : path, options : nil, withType : NSSQLiteStoreType)
            completion(nil)
        }
        catch
        {
            completion("\(Errors.coredataBackupError)\(error.localizedDescription)")
        }
    }
    

提交回复
热议问题