0

この関数で SIGTRAP を取得しています

- (void)initFetchRequest
{    
    NSManagedObjectContext *context = document.managedObjectContext;
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    request.entity = [NSEntityDescription entityForName:@"Shindy" inManagedObjectContext:self.managedObjectContext];
    // Configure the request's entity, and optionally its predicate.
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"details" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors];

    fetchedResultsController = [[NSFetchedResultsController alloc]
                                              initWithFetchRequest:request
                                              managedObjectContext:context
                                              sectionNameKeyPath:nil
                                              cacheName:nil];

    // SIGTRAP here

    NSError *error = nil;
    [fetchedResultsController performFetch:&error];

    if (![self.fetchedResultsController performFetch:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    }
}

コメントしたところです。なぜこのエラーが発生するのかわかりません。コンソールは私に何も与えていません。そして、クラッシュの詳細は単なる 0__kill です。

追加したい注意点は、この関数を含むビューが最初に読み込まれたときにクラッシュがないことです。しかし、別のビューに移動するときは、いくつかのオブジェクトを Core Data に追加してから、ビューを閉じます。私の元のビュー (問題のビュー) が突然 SIGTRAP エラーをスローします。

何か案は?

4

1 に答える 1

0

コードでは、 への 2 つの参照を使用していますNSManagedObjectContext

  • context(フェッチされた結果コントローラ用)および
  • self.managedObjectContext(取得リクエストのエンティティ用)。

これらが本当に同じかどうかを確認する必要があります。いずれにせよ、FRC とその初期化フェッチ要求に同じ変数を使用する方がはるかに優れています。

エラーの別の原因は、ソート記述子である可能性があります。他の場所で期待どおりに機能しているかどうかを確認します。

于 2013-01-07T13:08:43.450 に答える