7

managedObjectContextのsave:コマンドでクラッシュが発生し続けます。NSLogステートメントも実行されないため、未解決のエラーステートメントが表示されないため、問題が何であるかを理解できません。それは毎回起こるわけではありませんが、散発的にしか起こりません。

コードは次のとおりです(基本的にカウンターをインクリメントしたい):

 if ([[managedObject valueForKey:@"canSee"]boolValue]){
    int read = [[managedObject valueForKey:@"timesRead"] intValue] +1;
    [managedObject setValue:[NSNumber numberWithInt:read] forKey:@"timesRead"]; 


    NSError *error;
    if (![resultsController.managedObjectContext save:&error]) {  //<-- crashes on this line!
        NSLog(@"Unresolved Core Data Save error %@, %@", error, [error userInfo]);
        exit(-1);
    }

コンソールウィンドウに、次のようなメッセージが表示されます。

  2010-08-20 08:12:20.594 AppName[23501:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet controllerWillChangeContent:]: unrecognized selector sent to instance 0xe54f560'

またはこれ:

  2010-08-20 08:12:20.594 AppName[23501:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet controllerWillChangeContent:]: unrecognized selector sent to instance 0xe54f560'

またはこれさえ:

  2010-08-19 23:09:59.337 AppName[761:307] Serious application error.  Exception was caught during Core Data change processing.  This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.  -[UITableViewLabel controllerWillChangeContent:]: unrecognized selector sent to instance 0x7f0a860 with userInfo (null)
  2010-08-19 23:09:59.356 AppName[761:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewLabel controllerWillChangeContent:]: unrecognized selector sent to instance 0x7f0a860'

次に、最初のスローでコールスタックが表示され、続いて通知が表示されます(「NSException」、「[プロセス23501への切り替え]」、および「プログラム受信シグナル:「SIGABRT」のインスタンスをスローした後に呼び出された終了」。

問題はCoreDataに関係していると思いますが、よくわかりません。ビルドとターゲットをクリーンアップしましたが、役に立たないようです。ManagedObjectContextをロック/ロック解除しようとしましたが、役に立ちません。

解決策を探し始める場所に関するここでのアイデアは大歓迎です!

4

2 に答える 2

16

UIViewControllerをリリースしていて、関連するをリリースしていないようですNSFetchedResultsController。は、終了時に保存をNSFetchedResultsControllerデリゲート(おそらくあなたの)に通知しようとしています。UIViewController

于 2010-08-20T16:59:37.753 に答える
5

マーカスの答えを詳しく説明するには、ビューが消えたときにNSFetchedResultsControllerのデリゲートをゼロにする必要があります。

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    self.fetchedResultsController.delegate = nil;
}
于 2013-02-16T23:31:53.157 に答える