Я хотел бы иметь четкое понимание того, что происходит, когда я для иллюстрации:Правильное обновление для взаимоотношений с NSManagedObject в
Book *newBook = [NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:context];
// setting book's attributes
Person *peter = [Person queryAndReturnBookCollectionWithName:@"Peter Parker"]; // returns already recorded collection with an already set "favorite book" relationship
peter.favoriteBook = newBook;
Я думаю, что ранее записанный экземпляр книги в peter.favoriteBook ISN» t удаляется, но остается сохраненным, я прав? Так что я должен вручную проверить, существует ли он и удалить его перед установкой нового значения или есть ли еще более чистый способ сделать это?
Когда вы создаете экземпляр книги (скажем, book1), как и вы, объект создается в базе данных (при условии, что вы когда-нибудь сэкономите). Когда вы назначаете этот объект таким отношениям, как peter.favouriteBook = book1, тогда вы просто устанавливаете отношения. Если теперь вы создадите другую книгу (скажем, book2) и назначьте то же отношение к book2 (peter.favouriteBook = book2), что единственное изменение - это отношения. Оба book1 и book2 все еще существуют в таблице Book. Я предполагаю, что вы не захотите удалить книгу1, потому что это может быть чужой favouriteBook! –
В книге вы можете подумать о том, чтобы иметь отношение To-Many под названием Book.favouredBy, являющееся обратным к Person.favoriteBook. Book1.favouredBy вернет NSSet всех людей, чья любимая книга book1. –
Спасибо за ваши четкие объяснения :) –