0
votes

This is the code:

lazy var persistentStoreCoordinator: NSPersistentStoreCoordinator? = {
    // The persistent store coordinator for the application. This implementation creates and returns a coordinator, having added the store for the application to it. This property is optional since there are legitimate error conditions that could cause the creation of the store to fail.
    let filemgr = FileManager.default

    let documentDirectoryURL = try! FileManager.default.url(for: .documentDirectory,
                                                            in: .userDomainMask,
                                                            appropriateFor: nil,
                                                            create: true)
    let databaseURL = documentDirectoryURL.appendingPathComponent(“def.sqlite")
    var error1 : NSError?
    let fileExists = (databaseURL as NSURL).checkResourceIsReachableAndReturnError(&error1)
    if(fileExists){
        self.copyFile()
    }
    var myOptions = Dictionary<String, Any>()
    myOptions[NSMigratePersistentStoresAutomaticallyOption] = true
    myOptions[NSInferMappingModelAutomaticallyOption] = true
    var coordinator: NSPersistentStoreCoordinator? = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
    let ext = ".sqlite"
    let url = self.applicationDocumentsDirectory.appendingPathComponent((Utils.getPreferenceValue(ForKey: Constants.LOGIN_USER_NAME))+ext)//".sqlite")

    var error: NSError? = nil
    var failureReason = "There was an error creating or loading the application's saved data."
    do {
        try coordinator!.addPersistentStore(ofType: NSSQLiteStoreType, configurationName: nil, at: url, options: myOptions)
    } catch var error1 as NSError {
        error = error1
        coordinator = nil
        // Report any error we got.
        var dict = [String: AnyObject]()
        dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data" as AnyObject?
        dict[NSLocalizedFailureReasonErrorKey] = failureReason as AnyObject?
        dict[NSUnderlyingErrorKey] = error
        error = NSError(domain: "YOUR_ERROR_DOMAIN", code: 9999, userInfo: dict)
        // Replace this with code to handle the error appropriately.
        // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
        NSLog("Unresolved error \(error), \(error!.userInfo)")
        abort()
    } catch {
        fatalError()
    }

    return coordinator
}

This is the error I am getting.

returned error Error Domain=NSCocoaErrorDomain Code=134110 "An error occurred during persistent store migration." UserInfo={sourceURL=file:///var/mobile/Containers/Data/Application/2963C60A-11D3-4A6F-9496-623F5EFCFCB1/Documents/[email protected], reason=Can't copy source store to destination store path, destinationURL=file:///var/mobile/Containers/Data/Application/2963C60A-11D3-4A6F-9496-623F5EFCFCB1/Documents/[email protected]_41b5a6b5c6e848c462a8480cd24caef3, NSUnderlyingError=0x1c4a40480 {Error Domain=NSCocoaErrorDomain Code=516 "The file “[email protected]_41b5a6b5c6e848c462a8480cd24caef3” couldn’t be saved in the folder “Documents” because a file with the same name already exists." UserInfo={NSFilePath=/var/mobile/Containers/Data/Application/2963C60A-11D3-4A6F-9496-623F5EFCFCB1/

1
If they are very large then you may want to consider taking control of the migration and either putting it onto a background thread or breaking it up into pieces so that the application can start up on timeSingh_Nindi
thanks for the help, but it was working fine before this release. Anyhow, I'll take your advice and will try doing this in the background. But currently, I need a quick fix.rohit

1 Answers

0
votes

If they are very large then you may want to consider taking control of the migration and either putting it onto a background thread or breaking it up into pieces so that the application can start up on time.