Волшебная запись добавить объект, ошибка другого контекста

Я использую Magical Record в своем приложении и хочу добавить функциональность для пользователя, чтобы добавить "Заметку", которая является дочерней по отношению к "записи".

Я добавил этот код:

    [MagicalRecord saveWithBlock: ^(NSManagedObjectContext *localContext) {
        Note *newNote = [Note MR_createInContext: localContext];

        newNote.content = noteContent;
        newNote.name = @"User Note";

        [self.entry addNotesObject: newNote];
     }
                      completion: ^(BOOL success, NSError *error) {
                          if (error != nil)
                          {
                              // show alert
                          }
                          else if (success)
                          {
                              [[self tableView] reloadData];
                          }
                      }];

Ошибка, которую я продолжаю получать в последней строке: "Неверная попытка установить" запись "отношения между объектами в разных контекстах"

Я попытался установить контекст "entry" и "newNote" в "localContext", но все равно получаю ту же ошибку.

Что мне не хватает?

1 ответ

Решение

self.entry был создан в другом контексте, поэтому вы не можете получить к нему доступ из этого. Вместо:

[self.entry addNotesObject: newNote];

Вы должны сначала найти self.entry объект в localContext:

[[self.entry MR_inContext:localContext] addNotesObject: newNote];

Вы можете найти объяснение использования MagicalRecord в параллельной среде в разделе Выполнение операций с основными данными в потоках. Хотя он довольно короткий, поэтому, на мой взгляд, стоит прочитать Руководство по программированию Core Data, даже если вы не используете CD напрямую.

Другие вопросы по тегам