Удалить объект из отношения один ко многим
Две сущности:
Notification
User
User
имеет атрибут с именем username
Есть один ко многим relationship
между User
<< ---> Notification
называется "пользователи"
E сть Notification
объект (ObjectA) сохранен, который имеет (2) User
Объекты, сохраненные в отношениях "пользователи". Я хотел бы обновить ObjectA, удалив один из User
объект в отношениях "пользователей".
User
У сущности есть атрибут с именем "username".
Есть (2) User'
Если у меня есть имя пользователя "UserA" и "UserB" в качестве объектов в отношениях "пользователи", как я могу удалить "UserA"?
Вот то, что я придумал, и это не работает:
NSFetchRequest *notificationRequest = [[NSFetchRequest alloc] initWithEntityName:@"Notification"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"notification_id == %@", [selectedManagedObject valueForKey:@"notification_id"]];
[self.managedObjectContext executeFetchRequest:notificationRequest onSuccess:^(NSArray *results)
{
//Since I'm fetching based on objectID, there should always be one Object.
Notification *notificationObject = [results objectAtIndex:0];
NSArray *usersArray = [NSArray alloc]init];
//I don't think the code below is correct?
usersArray = [notificationObject valueForKey:@"users"];
for (User *user in userArray)
{
if (user.username == @"UserA")
{
[self.managedObjectContext deleteObject:user];
[self.managedObjectContext saveOnSuccess:^{
} onFailure:^(NSError *error) {
}];
} onFailure:^(NSError *error) {
}];
РЕДАКТИРОВАТЬ
Каков наилучший способ удалить объект "UserA" из отношений?
1 ответ
Если при удалении объекта "Пользователь" также удаляется связанный объект "Уведомление", вы, вероятно, установили "Правило удаления" для отношения от "Пользователь" до "Уведомление" и "Каскад". Вместо этого вы должны установить его на "Nullify".
Обратите внимание, что сравнение строк
if (user.username == @"UserA")
это неправильно, это должно быть
if ([user.username isEqualToString:@"UserA")
Это, однако, не объясняет, почему объект "Уведомление" удаляется.