3

在此处输入图像描述

这将删除 BLOG 中的对象,但不会删除 LABEL 中的对象。我认为 coredata 会自动删除两个实体?我必须在每个实体上手动执行吗?我该怎么做 LABEL 没有删除方法。

    //delete records from database no longer needed
    for (NSManagedObject *blogTBD in deleteArray) {

        //Delete object from BLOG
        [self.managedObjectContext deleteObject: blogTBD];
     }

在我的 BLOG.h 文件中也有四种方法。有人可以解释为什么使用它们,因为我似乎无法将它们用于任何有用的事情。

- (void)addLabelsObject:(LABEL *)value;
- (void)removeLabelsObject:(LABEL *)value;
- (void)addLabels:(NSSet *)values;
- (void)removeLabels:(NSSet *)values;

在我的脑海中,逻辑将是 [blogObj addLabels: nssetoflabels] 在 LABEL 中添加新标签或 [blogObj removeLabelsObject: label] 以删除 LABEL 中的标签,但这些都不起作用。

这是我为每个博客添加标签的方法,这是我让它工作的唯一方法:

  for (int i = 0; i < newCategory.count; i++) {

        LABEL *blogLabels = [NSEntityDescription       insertNewObjectForEntityForName:@"LABEL" inManagedObjectContext:self.managedObjectContext];
        blogLabels.categories = [NSString stringWithFormat:@"%@", newCategory[i]];

        //Assign relatioship - add labels to blog
        blogLabels.blog_labels = myBlog;

        //save label
        [self.managedObjectContext save:&error];
    }
4

1 回答 1

5

您必须将模型中的删除规则从“Nullify”更改为“Cascade”。

在此处输入图像描述

Nullify 是默认设置,因为它是最安全的。Nullify 不会删除任何内容,它只是将反向关系设置为 Null。
Cascade 将删除关系目标处的对象。


关于您的第二个问题,这些方法的工作原理与您认为的完全一样。

为什么他们不工作?我不知道。他们应该工作。

于 2013-07-02T20:26:04.737 回答