CoreData不删除项之间的关系

时间:2016-06-01 14:58:00

标签: ios objective-c core-data

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
      RPCoreData *manager = [RPCoreData sharedManager];
      if (manager.IdsArray) {
          NSPredicate *itemFilter = [NSPredicate
              predicateWithFormat:@"NOT (id IN %@)", manager.IdsArray];
          NSArray *itemArray = [ItemData MR_findAllWithPredicate:itemFilter];
          for (ItemData *itemData in itemArray) {
              NSPredicate *categoryFilter =
                  [NSPredicate predicateWithFormat:@"id == %@", itemData.category.id];
              CategoryData *categoryDataInLocalContext =
                  [CategoryData MR_findFirstWithPredicate:categoryFilter inContext:localContext];
              if (![categoryDataInLocalContext isKindOfClass:[NSNull class]]) {
                  [categoryDataInLocalContext removeRelationshipObject:itemData];
              }
          }
      }

    }
        completion:^(BOOL success, NSError *error) {
          NSLog(@"%i %@", success, error);
        }];

NSlog打印出No,nil。

未删除CategoryData和ItemData之间的关系。 类别与ItemData具有一对多的关系

1 个答案:

答案 0 :(得分:0)

您应该只需设置

即可删除关系
for (ItemData *itemData in itemArray) {
  itemData.categoryData = nil
}

无需获取CategoryData。如果从itemData端删除关系,它也会从CategoryData端删除。

确保您的数据模型中的Delete rule设置为Nullify。还要检查您是否处于正确的环境中。