amount(float)、categoryTotal(float)、category(string)などの属性を持つコアデータエンティティがあります
最初のViewControllerは、FethchedResultsControllerを使用してエンティティを取得し、カテゴリ、次にcategoryTotalに基づいてエンティティを並べ替えます。これまでのところ問題はありません。
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Transaction" inManagedObjectContext:moc];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(dateStamp >= %@) AND (dateStamp =< %@)", startDate, endDate];
[request setPredicate:predicate];
NSSortDescriptor *sortByCategory = [[NSSortDescriptor alloc] initWithKey:@"category" ascending:sortOrder];
NSSortDescriptor *sortByTotals = [[NSSortDescriptor alloc] initWithKey:@"categoryTotal" ascending:sortOrder];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortByTotals, sortByCategory, nil];
[request setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:@"category" cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
行(tableView:didSelectRowAtIndexPath)を選択すると、選択したエンティティの金額フィールドを編集できる別のビューコントローラーが読み込まれます。
最初のビューに戻る前に、categoryTotalは新しい'amount'によって更新されます。問題は、最初のView Controllerに戻るときに発生し、アプリは
重大なアプリケーションエラー。Core Data変更処理中に例外がキャッチされました:無効な更新:セクション0の無効な行数。更新後の既存のセクションに含まれる行数(1)は、更新前のそのセクションに含まれる行数と同じである必要があります(1)、プラスまたはマイナスそのセクションから挿入または削除された行数(0が挿入され、1が削除された)。userInfo(null)を使用プログラム受信信号:「EXC_BAD_ACCESS」。
これはNSSortDescriptor*sortByTotals = [[NSSortDescriptor alloc] initWithKey:@ "categoryTotal" ascending:sortOrder];の好意によるようです。これを削除すると、すべてが期待どおりに機能しますが、必要な並べ替えがないことは明らかです。
これは、categoryTotalの変更(削除/挿入)による並べ替え順序の変更に関係していると思いますが、これを修正する方法が見つかりません。2番目のビューで値が正しく変更されていることを確認したので、fetchedResultsControllerが混乱しているように見えます。categoryAmountがソート順を変更しないものに変更された場合、エラーは生成されません。
fetchedResultsControllerが返すアイテムの数を物理的に変更(つまり削除)していません...このエラーを生成しているように見える他の唯一の問題を見つけることができます
どんなアイデアでも大歓迎です
ありがとう、AJ