使用Swift 2.0的“persistentStoreCoordinator”出错

时间:2016-09-11 00:23:56

标签: ios swift core-data swift2

我已经使用swift 1.2在我的应用程序中实现了CoreData。迁移到swift 2.0之后,我开始在iTune Connect上收到崩溃报告。我尝试了我朋友的一个设备,他在更新后让应用程序崩溃了。我删除了应用程序,并从App商店重新安装它,之后它运行得很好,但是我收到很多来自用户的电子邮件,这些邮件对崩溃感到沮丧,要求用户卸载应用程序可能非常不方便并重新安装。

我无法在测试时重现错误,因此我使用组织者运行崩溃代码,错误代码落在本节中:

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.
    // Create the coordinator and store
    let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel)
    let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite")
    var failureReason = "There was an error creating or loading the application's saved data."
    do {
        try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: nil)

    } catch {

        // Report any error we got.
        var dict = [String: AnyObject]()
        dict[NSLocalizedDescriptionKey] = "Failed to initialize the application's saved data"
        dict[NSLocalizedFailureReasonErrorKey] = failureReason

        dict[NSUnderlyingErrorKey] = error as NSError
        let wrappedError = 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 \(wrappedError), \(wrappedError.userInfo)")
        abort()
    }

    return coordinator
}()

我从来没有触及应用程序核心数据生成的文件或数据模型。

我试过看了这个,我找不到修复。看起来苹果在升级Swift编程时没有注意到这是一个小故障。 具有类似问题的最接近的问题是here,并且“Tal Zion”建议的解决方案在我的AppDelegate中具有确切的代码。 我觉得在迁移到Swift 2.0后,不知何故sqlite文件被更改或重命名,使用Swift 1.2构建的版本输入数据的用户与swift 2.0版本崩溃了。

如果我能解决这个问题,我将非常感激。

以下是错误的屏幕截图:

enter image description here

0 个答案:

没有答案