我终于设法让Apple Food Tracker教程应用程序运行,尽管使用了一种完全不同的评级控制方法。对于那些不熟悉应用程序的人,它允许您创建和编辑一组简单的“用餐”记录。
为了加速应用程序,我只会在应用程序关闭时将数据保存到文件,而不是每次添加,编辑或删除项目时都保存。
问题在于保存似乎很慢,即使只有四个项目中的三个。如果我在关闭后过早地重新打开应用程序,数据将恢复为之前的保存。
这是我的保存功能,在包含数据模型的表视图控制器中:
public func saveMeals() {
let isSuccessfulSave = NSKeyedArchiver.archiveRootObject(meals, toFile: Meal.ArchiveURL.path)
if !isSuccessfulSave {
print("Failed to save meals")
}
}
以下是来自AppDelegate的电话:
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
if let rootViewController = window?.rootViewController as? UINavigationController {
if let viewController = rootViewController.viewControllers.first as? MealTableViewController {
viewController.saveMeals()
}
}
}
是否有更好,更快的保存方式,还是可以在保存完成之前阻止应用关闭?感谢您的任何建议。
编辑:有时似乎没有调用保存功能。如果我总是在桌面视图控制器可见的情况下关闭应用程序,该怎么办?