#ios #core-data #nsmanagedobject
#iOS #core-данные #nsmanagedobject
Вопрос:
Итак, у меня есть приложение с вкладками. Первая вкладка позволяет пользователю вводить информацию в ~ 20 полей, описывающих NSManagedObject. Затем они могут сохранить это в core data, и это работает просто отлично.
Вторая вкладка представляет собой табличное представление всех существующих представлений. Теперь, когда пользователь нажимает на ячейку в TableView, открывается первая вкладка и повторно заполняются все поля, которые были первоначально сохранены в core data. Когда пользователь снова нажимает сохранить, я хочу, чтобы существующее представление в core data обновлялось вместо новой вставки в core data.
Я нашел много информации о том, что я должен сделать запрос на выборку, а затем обновить его таким образом. Но это кажется мне излишним, потому что у меня уже есть объект, который был сохранен, переданный на первую вкладку / ViewController.
Если бы вы могли указать мне какой-нибудь код, который помог бы моей ситуации, или описать способ, которым вы могли бы выполнить этот сценарий, я был бы очень признателен!
Комментарии:
1. Если у вас все еще есть ссылка на объект, просто установите для его свойств обновленные значения при нажатии кнопки save и вызовите метод контекста управляемого объекта
save:
.2. Хм, я не уверен, что у меня все еще есть доступ к контексту, используемому для извлечения элементов из core data и заполнения табличного представления. Когда пользователь обновляет информацию, они делают это на первой вкладке. Контекст, используемый для захвата элемента, находится на второй вкладке. Когда пользователь выбирает одну из ячеек в таблице, я передаю ссылку на элемент на первую вкладку. Я ошибаюсь, думая, что у меня нет доступа к контексту второй вкладки?
3. Зависит от того, работаете ли вы с потоками и несколькими контекстами. Если это не так, вы должны иметь возможность получить доступ к контексту управляемого объекта из
managedObjectContext
свойства onNSManagedObject
.4. Это было именно то, что я искал. Спасибо миллион! Если вы хотите опубликовать свой комментарий в качестве ответа, я бы с удовольствием отметил его как правильный.
Ответ №1:
Поскольку у вас есть ссылка NSManagedObject
на первую вкладку, вы можете обновить ее свойства до новых значений при сохранении пользователем. Затем вы можете сохранить изменения в своем NSManagedObject
(назовем это myObject
для простоты), вызвав [[myObject managedObjectContext] save:amp;error]
where error
is an NSError *
.