我需要 Apple 文档中的一些说明
提取请求必须至少有一个排序描述符。如果控制器生成节,则数组中的第一个排序描述符用于将对象分组为节;它的键必须与 sectionNameKeyPath 相同,或者使用其键的相对顺序必须与使用 sectionNameKeyPath 的顺序匹配。
我通过NSFetchedResultsController
以下方式使用 with 部分
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:mainContext
sectionNameKeyPath:@"paymentDate"
cacheName:nil];
正如我从文档中了解到的那样,NSFetchRequest
我传入的NSFetchedResultsController
必须至少是一个排序描述符。但是由于我使用部分,所以排序描述符必须如下所示:
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"paymentDate" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"paymentCode" ascending:YES],
nil]];
如果我使用排序描述符,例如
[fetchRequest setSortDescriptors:[NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"paymentCode" ascending:YES],
nil]];
我收到如下错误
NSFetchedResultsController 错误:索引 X 处获取的对象的节名 Y 乱序。对象必须按节名排序'
就我而言,使用[NSSortDescriptor sortDescriptorWithKey:@"paymentDate" ascending:YES]
,它可以让我克服这个问题。也许我只是幸运;)。
但是,这是什么意思,或者使用其键的相对排序必须与使用 sectionNameKeyPath 匹配?你能给我一个解释吗?
先感谢您。