极少数情况下(<1% 的用户),用户会通知我他们打开了我的应用程序,但他们的所有数据都消失了。我遇到的问题是我无法复制这个问题,因为它很少发生。我什至不知道如何开始解决这个问题。用户使用该应用程序时似乎不会发生这种情况。他们似乎只是有一天打开它,数据不再存在。
有一次,用户可以通过关闭和打开我的应用程序的 iCloud 开关(在手机设置中)来恢复数据。但是,这不适用于其他用户。
我正在阅读 iOS 可能会在存储空间已满时删除缓存。但是,据我了解,容器的默认位置在应用程序支持中。
这是我在 App Delegate 中的核心数据实现:
lazy var persistentContainer: NSPersistentContainer = {
let container = NSPersistentCloudKitContainer(name: "Bench")
container.loadPersistentStores(completionHandler: { (storeDescription, error) in
if let error = error as NSError? {
print("Unresolved error \(error), \(error.userInfo)")
}
})
container.viewContext.automaticallyMergesChangesFromParent = true
return container
}()
func saveContext () {
let context = persistentContainer.viewContext
if context.hasChanges {
context.perform {
do {
try context.save()
} catch {
let nserror = error as NSError
print(nserror.localizedDescription)
}
}
}
}
我像这样在全球范围内访问它:
let ad = UIApplication.shared.delegate as! AppDelegate
let context = ad.persistentContainer.viewContext