1

两个实体:

  • Notification
  • User

User有一个属性叫做username

<<--->relationship之间存在一对多的称为“用户”UserNotification

保存的Notification对象 (ObjectA) 具有 (2)User保存在“用户”关系中的对象。我想通过删除User“用户”关系中的一个对象来更新 ObjectA。

User实体有一个名为“用户名”的属性。

在“用户”关系中有(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”对象的最佳方法是什么?

4

1 回答 1

1

如果删除“用户”对象也会删除相关的“通知”对象,那么您可能已经为从“用户”到“通知”到“级联”的关系设置了“删除规则”。您应该将其设置为“无效”。

还要注意字符串比较

if (user.username == @"UserA")

错了,应该是

if ([user.username isEqualToString:@"UserA")

然而,这并不能解释为什么“通知”对象被删除。

于 2013-10-22T16:23:00.660 回答