gsk*_*yte 5 core-data objective-c nsfetchedresultscontroller
我遇到了一个问题,我不知道它来自哪里,与CoreData相关.在我的数据库中,a有一组类别(带名称和描述),其中包含元素(使用一对多关系).
我想在给定Category类的属性的部分中划分我的表视图,但是当我尝试使用时sectionNameKeyPath:,结果NSFetchedResultsController有0个部分.如果我将nil传递给此参数,则它有1个部分.
代码如下:
- (NSFetchedResultsController*) fetchedResultsController
{
if(fetchedResultsController)
return fetchedResultsController;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
// Edit the entity name as appropriate.
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Category"
inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Set the batch size to a suitable number.
[fetchRequest setFetchBatchSize:10];
// Edit the sort key as appropriate.
NSSortDescriptor *checkDescriptor = [[NSSortDescriptor alloc] initWithKey:@"checked"
ascending:YES];
NSSortDescriptor *indexDescriptor = [[NSSortDescriptor alloc] initWithKey:@"orderIndex"
ascending:YES];
NSArray *sortDescriptors = @[checkDescriptor, indexDescriptor];
[fetchRequest setSortDescriptors:sortDescriptors];
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"checked"
cacheName:nil];
NSError *error = nil;
if (![fetchedResultsController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
return nil;
} else {
fetchedResultsController.delegate = self;
return fetchedResultsController;
}
}
Run Code Online (Sandbox Code Playgroud)
请参阅NSFetchedResultsController文档:(在您的情况下为“name”)使用的键sectionNameKeyPath必须与第一个排序描述符(在您的情况下为“checked”)中使用的键相同。它们可以不同,但两个键必须生成相同的相对顺序。
在你的情况下,我假设你想在“name”上添加一个额外的排序描述符,并将其用作第一个排序描述符。
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |