我有一个 TableView 控制器类,它使用获取的结果控制器来显示从核心数据模型中获取的“患者”实体列表。该表的部分取自称为“位置”的患者属性。这是获取请求的排序描述符:
NSSortDescriptor *locationDescriptor = [[NSSortDescriptor alloc] initWithKey:@"location" ascending:YES];
NSSortDescriptor *lastNameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:locationDescriptor, lastNameDescriptor, nil];
这是 FRC 的初始化代码:
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"location" cacheName:@"List"];
当我想添加一个新的“患者”实体时 - 我单击一个添加按钮,然后将一个“添加新患者”视图控制器推送到导航堆栈。
我添加的第一个病人工作正常。
如果我添加第二个患者 - 应用程序有时会崩溃并出现以下错误:
2010-03-22 14:42:05.270 患者 [1126:207] 严重的应用程序错误。在核心数据更改处理期间捕获到异常:* -[NSCFArray insertObject:atIndex:]:索引 (1) 越界 (1) 与 userInfo (null) 2010-03-22 14:42:05.272 患者 [1126:207] *由于未捕获的异常“NSRangeException”而终止应用程序,原因:“*** -[NSCFArray insertObject:atIndex:]: index (1) beyond bounds (1)”
这似乎只有在患者添加了位置时才会发生(如果没有添加,则位置默认为“未知”)。它似乎也与位置的排序有关。例如,如果第一个患者位置 = 14 号病房,第二个患者位置 = 9 号病房,那么它一定会崩溃。
我想知道这是否与我如何要求获取的结果控制器对部分名称进行排序有关?
这个错误让我发疯,我就是想不通。任何帮助将不胜感激!