CoreData不会删除一对多实体的对象

时间:2013-07-02 20:23:04

标签: ios sqlite object core-data

enter image description here

这将删除BLOG中的对象,但不会删除LABEL中的对象。我以为coredata会自动删除两个intities吗?我是否必须在每个实体上手动完成?我该怎么做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中的标签,但这些都不起作用。

以下是我为每个博客添加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];
    }

1 个答案:

答案 0 :(得分:5)

您必须将模型中的delete rule从“Nullify”更改为“Cascade”。

enter image description here

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


关于你的第二个问题,这些方法与你认为的完全一样。

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