使用FetchResultController和ManagedObjectContext获取对象的区别
题
什么是从核心数据获取元件与FetchResultController或ManagedObjectContext之间的差值Δθ
1)FetchResultController
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext: managedObjectContext]];
NSSortDescriptor *sortDescriptorNameAscending = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorNameAscending,nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptorNameAscending release];
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Lists"];
2)ManagedObjectContext
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext:managedObjectContext]];
NSError *error = nil;
NSArray *items = [ managedObjectContext executeFetchRequest:request error:&error];
解决方案
后面使用,而不是仅仅一个NSFetchedResultsController
一个NSFetchRequest
的要点是将数据和方便的方法的监测与部分工作时。
当只有一个NSFetchRequest
打交道,你必须自己确定的部分,你需要重新获取数据时有新的变化。
当与NSFetchedResultsController
处理时,它将确定你的部分,高速缓存的结果(制造用于接近瞬时的数据的第二请求),并为您的NSTableView的提供方便的方法。最后,当你的数据发生变化时,NSFetchedResultsController
会通知你通过它的代表。
内部到这两个数据将是相同的。据管理这些数据是差的状态。
其他提示
在NSFetchedResultsController
对象会告诉你,你的查询变化时的对象。只是提供一个委托对象以接收呼叫(参见NSFetchedResultsControllerDelegate
协议的文档)。
它还为您提供部管理如果要在表格视图中显示的数据是有用的。
不隶属于 StackOverflow