首页 > 解决方案 > 即使在 context.save() 之后,Core Data 也不会持久化

问题描述

我正在将不同的活动保存到 Core Data。当应用程序运行时,我可以轻松检索这些数据。但是在我关闭应用程序之后,即使我使用context.save(). 任何想法为什么会发生这种情况?

private func getContext() -> NSManagedObjectContext {
    let appDelegate = UIApplication.shared.delegate as! AppDelegate
    return appDelegate.persistentContainer.viewContext
}

func retrieveTestEntity() -> TestEntity? {
    let managedContext = getContext()
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "TestEntity")
    
    do {
        let result = try managedContext.fetch(fetchRequest) as! [TestEntity]
        
        if result.count > 0 {
            // Assuming there will only ever be one Entity in the app.
            return result[0]
        } else {
            return nil
        }
    } catch let error as NSError {
        print("Retrieving user failed. \(error): \(error.userInfo)")
        return nil
    }
}

func saveActivity(_ activity: Activity) {
    let managedContext = getContext()
    guard let testEntity = retrieveTestEntity() else { return }
    
    testEntity.activity.append(activity)
    
    do {
        print("Saving session...")
        try managedContext.save()
    } catch let error as NSError {
        print("Failed to save session data! \(error): \(error.userInfo)")
    }
}

标签: iosswiftstorage

解决方案


推荐阅读