面试题答案
一键面试设置和维护多对一关系
-
定义实体和属性: 在数据模型中,
Book
实体有一个指向Author
实体的关系属性,例如命名为author
;Author
实体可以有一个反向关系属性(通常为books
,用于方便获取该作者的所有书籍)。 -
创建对象并设置关系:
// 创建作者
Author *author = [Author MR_createEntity];
author.name = @"张三";
// 创建书籍并关联作者
Book *book1 = [Book MR_createEntity];
book1.title = @"书籍1";
book1.author = author;
Book *book2 = [Book MR_createEntity];
book2.title = @"书籍2";
book2.author = author;
// 保存上下文
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
删除作者时处理相关联书籍
-
级联删除: 在数据模型编辑器中,选中
Author
到Book
的关系,将Delete Rule
设置为Cascade
。这样当删除Author
时,与之关联的Book
对象会自动被删除。 -
代码实现删除作者:
Author *authorToDelete = [Author MR_findFirstByAttribute:@"name" withValue:@"张三"];
if (authorToDelete) {
[[authorToDelete managedObjectContext] deleteObject:authorToDelete];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
}
在上述代码中,由于设置了级联删除规则,当authorToDelete
被删除时,所有与该作者关联的Book
对象也会被一并删除。