我将一个NSFetchedResultsController放入我的代码,所以我得到了很好的自动切片我的表视图数据。如何正确配置NSFetchedResultsController
所以我正在运行一个测试,以确保一切工作正常。我在持久存储中有一个Book实体。我将首先执行获取旧方式,然后我会尝试使用NSFetchedResultsController。这两个代码块之间的区别仅仅是2行。
代码没有 NSFetchedResultsController:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:kBookEntityName inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[request setSortDescriptors:sortDescriptors];
[sortDescriptor release];
[sortDescriptors release];
//The following 2 lines will be replaced by the NSFetchedResultsController
NSMutableArray *mutableFetchResults = [[[self.managedObjectContext executeFetchRequest:request error:nil] mutableCopy] autorelease];
Book *result = (Book*)[mutableFetchResults objectAtIndex:0];
NSString* title = [result valueForKey:@"title"];
NSString* priority = [result valueForKeyPath:@"priority.name"];
[request release];
现在我在替换为NSFetchedResultsController行:
NSFetchedResultsController* fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"title" cacheName:@"BookList"];
Book *result = (Book*)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
似乎很添油加醋。第一个代码块可以正确提取单个Book实体。但是,NSFetchedResultsController的代码不会。相反,它返回零。
我的问题是:我在这个例子中正确配置NSFetchedResultsController?
(注意,该NSFetchedResultsController的fetchedObjects属性也是零)
“标题”组织只是一个测试,以启动和运行。我实际上想通过作者姓名的关键路径进行区分,但希望通过一个简单的示例来使用它。 – 2009-09-02 02:24:13
这真的很让人伤心,我并没有真正执行抓取。我不知道为什么我假定在初始化时执行了获取。 谢谢 – 2009-09-02 23:12:28
谢谢,那帮助我:) – mateusmaso 2011-06-19 22:44:03