以前,在带有 XCode 3.2.2 的 iPhone OS 3.2 上,这曾经可以正常工作。
我创建了一个小测试来证明这一点。一个具有 2 个属性的 NSManagedObject,“group”和“vaue”。两个字符串。
在设置要在 TableViewController 中使用的 NSFetchedResultsController 时,我在请求中设置了 setFetchLimit 并将 sectionNameKeyPath 设置为“组”,因为我希望将结果实体分组到部分中。
前一种行为(之前的 iPhone OS 4 和 XCode 3.2.3)将返回包含限制中指定的最大实体数量的实体的结果集。
使用新的 OS 和 XCode,每个部分中的 FecthedResultsController“部分”和 numberOfObjects 返回持久存储中的所有值,忽略设置的限制。
但是当委托方法尝试访问数据时,它不存在,它会生成一个 [_PFBatchFaultingArray objectAtIndex:]: index (X) beyond bounds (X)',这是我设置的限制,并导致应用程序崩溃。
在我看来,当使用自 3.2.3/OS 4 以来引入的限制和部分时,SDK 中存在一个错误。
问题的一个例子:
在数据存储组“A”中包含“3”项,组“B”包含“2”项,组“C”包含“2”项(即项目总数 7),并且限制设置为7、所有部分将被退回。如果限制设置为小于 7,应用程序将崩溃。
还有其他人遇到这个问题吗?