Обновление NSManagedObject в Core Data

#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 свойства on NSManagedObject .

4. Это было именно то, что я искал. Спасибо миллион! Если вы хотите опубликовать свой комментарий в качестве ответа, я бы с удовольствием отметил его как правильный.

Ответ №1:

Поскольку у вас есть ссылка NSManagedObject на первую вкладку, вы можете обновить ее свойства до новых значений при сохранении пользователем. Затем вы можете сохранить изменения в своем NSManagedObject (назовем это myObject для простоты), вызвав [[myObject managedObjectContext] save:amp;error] where error is an NSError * .