1

私はかなり奇妙な問題を抱えています。メモを保存するために coredata を使用しています。1 つのカテゴリに加えて、「メモ」エンティティのすべての属性にアクセス/保存/編集できます。

-(void)editCategory {

    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    NSEntityDescription *categRequest = [NSEntityDescription entityForName:@"Notes" inManagedObjectContext:_managedObjectContext];
    request.predicate = [NSPredicate predicateWithFormat:@"text = %@", noteToEdit];
    [request setEntity:categRequest];

    //Error handling
    NSError *error = nil;
    NSMutableArray *mutableFetchResults = [[_managedObjectContext executeFetchRequest:request error:&error]mutableCopy];
    if (mutableFetchResults == nil) {
        NSLog(@"Error happened : %@", error);
    }

    Notes *editMe = [mutableFetchResults objectAtIndex:0];
    [editMe setCategory:editCategoryText];
    NSLog(@"Category from pickerview : %@", editCategoryText);
    if (![_managedObjectContext save:&error]) {
        NSLog(@"couldnt save : %@", error);
    }
}

この行:

[editMe setCategory:editCategoryText];

クラッシュしています。editCategoryText は、カテゴリ属性としての文字列です。奇妙なことに、まったく同じコードを使用して title 属性を変更していますが、問題はありません。

ログファイル:

2013-11-07 15:49:20.286 Simple Notes 1[16511:a0b] -[__NSCFString managedObjectContext]: 認識されないセレクターがインスタンス 0x8dccc30 に送信されました
2013-11-07 15:49:20.293 シンプル ノート 1[16511:a0b] *** キャッチされない例外 'NSInvalidArgumentException' によるアプリの終了、理由: '-[__NSCFString managedObjectContext]: 認識されないセレクターがインスタンス 0x8dccc30 に送信されました'

このアトリビュートが他のアトリビュートと異なる動作をしている理由がわかりましたか? ありがとうございました。

4

2 に答える 2

0

コンピューターではないため、これをテストすることはできませんが、

を取り除きmutableCopyます。executeFetchRequest自動解放されたオブジェクトを返し、それをコピーしようとすると、これがガベージ ポインターになり、たまたま文字列を指すことになります。

于 2013-11-07T22:15:01.870 に答える
0

実際にはコア データのバグだったようです。シミュレーターでアプリを削除し、xcode でコア データ モデルを削除し、再度ビルドしてクリーンを実行することで解決しました。

于 2013-12-12T15:34:03.410 に答える