Волшебная запись добавить объект, ошибка другого контекста
Я использую 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 напрямую.