2

极少数情况下(<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
4

0 回答 0