#ios #swift
#iOS #swift
Вопрос:
Мне наконец-то удалось запустить учебное приложение 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()
}
}
}
Есть ли лучший и быстрый способ сохранения или я могу запретить приложению закрываться до завершения сохранения? Спасибо за любые предложения.
Редактировать: Похоже, что иногда функция сохранения не вызывается. Как это может быть, если я всегда закрываю приложение с видимым контроллером табличного представления?
Комментарии:
1. С о р е Д а т а
2. Не уклоняйтесь от Core Data. Это отличный фреймворк.
3. Спасибо, Лео, я записался на онлайн-курс, который среди прочего охватывает основные данные. Просто из интереса я заставил приложение Food Tracker работать лучше, переместив функцию сохранения в applicationDidEnterBackground.