【发布时间】:2015-02-18 08:47:04
【问题描述】:
我目前面临一个(对我而言)奇怪的问题,如下所示:
我有一个孩子 MOC (NSManagedObjectContext),有大约两打 MO (NSManagedObjects)。每个 MO 都有一个可选的布尔属性 flag。所有这些都设置为@(NO)。 fetchedResultsController 是一个NSFetchedResultsController,它获取这些MO,其managedObjectContext 是moc,其sectionNameKeyPath 是@"flag"。 fetchedResultsController 在flag 上也有一个sort descriptor(以及另一个二级排序属性)。
运行这几行代码后
NSAssert(!moc.hasChanges, nil); // no unsaved changes
BOOL flag = [fetchedResultsController performFetch: &error];
NSAssert(flag && (error == nil), nil); // no errors
我观察到以下几点:
-
fetchedResultsController.fetchedResults包含与moc一样多的 MO,并且它们的所有标志都是@(NO)(正如人们所期望的那样)。 -
fetchedResultsController.sections.count和fetchedResultsController.sectionIndexTitles.count都是1(正如人们所预料的那样,因为所有flags 都具有相同的值)。 -
fetchedResultsController.sectionIndexTitles[0]是@"1"。
第三项对我来说似乎是错误的。我会期待@"0"(因为这是[@(NO) description] 的capitalized first letter)。
这里可能有什么问题,在这种情况下如何获得正确的部分索引标题?
更新我现在看起来问题可能与使用flag(可选的布尔核心数据属性)作为sectionNameKeyPath有关(still)。即使flag 的值不同,performFetch: 也只会导致一个标题为@"1" 的部分。
【问题讨论】:
标签: ios core-data nsfetchedresultscontroller