在一个教程中,我正在从预制件中学习CoreData,以便在笔记应用程序中获取笔记集合:
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Note"];
self.notes = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
[self.tableView reloadData];
}
首先,notes
是一个NSMutableArray,所以请告诉我,我是否理解正确:
他们创建一个NSManagedObjectContext对象来保存上下文。
他们创建了一个从数据库文件中获取“Note”实体的请求。
他们使用managedObjectContext用请求的请求(即fetchRequest)调用executeFetchRequest。现在这里是我不完全理解的部分(可能还有一些以前的部分,如果我没有,请纠正我):
我从这个调用[managedObjectContext executeFetchRequest:fetchRequest error:nil];
获得的对象类型是NSSet吗?并通过调用mutableCopy
我正在返回一个数组?
由于
答案 0 :(得分:0)
[managedObjectContext executeFetchRequest:fetchRequest error:nil]
返回一个(不可变的)NSArray
,mutableCopy
创建一个 - well-mutable副本
那个数组。它不会复制数组或上下文中的托管对象。
它只允许您修改self.notes
,例如添加,删除或重新排列对象
在可变阵列中。
备注:如果在表格视图中显示Core Data fetch请求中的对象
那么你应该看看NSFetchedResultsController
。它可能看起来更多一点
在开头很复杂,但允许(例如)自动更新
表视图是否插入,删除或修改对象。