我將一個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