В настоящее время я работаю над приложением, которое отслеживает кошек и связанных с ними чизбургеров. Я поддерживаю приложение с Core Data. Между кошкой и чизбургерами существует отношение один ко многим (кошке разрешено иметь ноль или более чизбургеров).
У меня есть UITableViewController, который отображает всех кошек по имени (фамилия, имя). Когда вы нажимаете на строку в таблице, на контроллер навигации помещается новый UITableViewController, который отображает всю информацию о коте. Что бы ни стоило, табличное представление сгруппировано с первой секундой, содержащей информацию о кошке (имя / фамилия, цвет и т. Д.). Затем во втором разделе описываются все сырные котлеты, которые есть у кошки.
Правым элементом навигации является кнопка редактирования. Когда пользователь находится в режиме редактирования, я скрываю кнопку «Назад» на панели навигации, заменяя ее кнопкой «Отмена».
У меня такой вопрос: существует ли стандартная / общепринятая практика и т. Д. О том, как обрабатывать данные на экране редактирования? Я вижу, что это происходит одним из двух способов:
- Отслеживайте все, что пользователь изменяет, и затем, когда он нажимает кнопку
done
, скопируйте эти изменения в Cat
NSManagedObject
.
- Используйте
NSUndoManager
, связанный с NSManagedObjectContext
, и когда пользователь начнет редактирование, создайте новую группу отмены. Когда они коснутся кнопки отмены, просто завершите группировку, а затем выполните отмену на NSUndoManager
.
Мне кажется, вариант 2 кажется наиболее практичным, но у меня смешанные чувства по этому поводу. Для iPhone NSManagedObjectContext
по умолчанию не имеет ассоциированного с ним NSUndoManager
- я читал, что он подходит для приложений OSX. Я также не вижу много дискуссий об использовании NSManagedObjectContext
в отношении программирования на iPhone во время чтения в сети. Это заставляет меня чувствовать, что люди могут использовать другой метод, о котором я не думал.