什么是从核心数据获取元件与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协议的文档)。 它还为您提供部管理如果要在表格视图中显示的数据是有用的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top