今天下午我有一次奇怪的经历,我不能指出问题所在。我一直在使用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)
我错过了一步吗?
答案 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)
}