核心数据不删除项目之间的关系


[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 打印出"否,无"。

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

您应该能够通过简单地设置

for (ItemData *itemData in itemArray) {
  itemData.categoryData = nil
}

无需获取类别数据。如果从 itemData 端删除关系,该关系也会从 CategoryData 端删除。

只需确保Delete rule设置为Nullify在数据模型中即可。还要检查您是否在正确的上下文中。

最新更新