iPhone崩溃时删除了Core Data对象

时间:2015-04-04 17:00:33

标签: ios swift core-data

今天下午我有一次奇怪的经历,我不能指出问题所在。我一直在使用Swift开发一款iPhone应用程序,今天我就把它拿出来进行测试。到目前为止,我已经在连接到Mac时单独测试了它。

应用跟踪位置并在用户开车时将其保存到Core Data。一切都很好,数据正在保存。直到电话崩溃并且核心数据似乎已经清空。在手机崩溃之前,数据肯定被保存了,因为我在地图视图上覆盖了保存的路线并且它肯定正在显示。并且没有调用删除数据的功能,因为我没有访问唯一调用它的视图控制器。

我的问题是,是否有其他人遇到此问题,或者是否存在已知问题,如果手机崩溃可以删除Core Data?

编辑:

这是我用来保存到Core Data的代码:

var context = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext!
        var savePosition = NSEntityDescription.insertNewObjectForEntityForName("Positions", inManagedObjectContext: context) as Positions

        savePosition.poi = false
        savePosition.time = currentTime
        savePosition.direction = currentDirection
        savePosition.latitude = currentLatitude
        savePosition.longitude = currentLongitude
        savePosition.game = currentGame

        context.save(nil)

我错过了一步吗?

1 个答案:

答案 0 :(得分:1)

在AppDelegate中使用此功能可以捕获错误并将其显示在UIAlertController中。这可能有助于追踪您的数据发生了什么。

func saveContext() {
    var error: NSError? = nil

    if !managedObjectContext.hasChanges {
        return
    }

    if managedObjectContext.save(&error) {
        return
    }


    // Error occured
    let alertController = UIAlertController(
        title: NSLocalizedString("Error", comment: ""),
        message: "\(error?.localizedDescription)\n\(error?.userInfo)",
        preferredStyle: .Alert
    )

    let defaultAction = UIAlertAction(
        title: "Ok",
        style: .Default,
        handler: nil)

    alertController.addAction(defaultAction)

    self.navigationController?.topViewController.presentViewController(alertController, animated: true, completion: nil)
}