这将删除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];
}
答案 0 :(得分:5)
您必须将模型中的delete rule从“Nullify”更改为“Cascade”。
Nullify是默认值,因为它是最安全的。 Nullify不删除任何内容,只是将反向关系设置为Null Cascade将删除关系目的地的对象。
关于你的第二个问题,这些方法与你认为的完全一样。
为什么他们不工作?我不知道。他们应该工作。