两个实体:
Notification
User
User
有一个名为username
relationship
<< --->之间存在一对多User
Notification
称为“用户”
保存了Notification
个对象(ObjectA),其中包含(2)User
以“用户”关系保存的对象。我想通过删除“用户”关系中的User
对象之一来更新ObjectA。
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”对象的最佳方法是什么?
答案 0 :(得分:1)
如果删除“用户”对象也会删除相关的“通知”对象, 那么你可能已经为“用户”到“通知”到“级联”之间的关系设置了“删除规则”。你应该把它设置为“Nullify”。
还要注意字符串比较
if (user.username == @"UserA")
错了,应该是
if ([user.username isEqualToString:@"UserA")
但这并不能解释为什么删除“通知”对象。