0

さて、私はすでにアップルのSDK開発者ページで例を試しましたが、うまくいきませんでした。私は次のようなstackoverflowに関する以前の質問の例を試しました:

NSEntityDescription  entitydesc = [NSEntityDescription entityForName:@"Model" inManagedObjectContext:context];
NSFetchRequest request = [[NSFetchRequest alloc]init];
[request setEntity:entitydesc];

//このスタイルの述語を試しました

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"accessible == %@", [NSNumber numberWithBool:YES]];

//そしてこれ

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"accessible == YES"];
[request setPredicate: predicate];

NSError *error;
NSArray *matchingData = [context executeFetchRequest: request error: &error];

どちらも機能しませんでした。デバッガーでは、matchingDataは、多くのオブジェクトが必要なときに0個のオブジェクトを表示します。

他のすべてのfetchrequestは完全に正常に機能しました。これは私に問題を与えている唯一のものです。

属性は、.xcdatamodelにブール型としてリストされています

属性は、エンティティのヘッダーファイルの下に次のようにリストされます。

@property (nonatomic, retain) NSNumber * accessible;

データは次のようにコアデータデータベースに入力されました。

NSNumber *accessibleFieldValue  = [NSNumber numberWithBool:YES];
[newModel setValue: accessibleFieldValue forKey:@"accessible"];

チェックしましたが、sqliteデータベースにnil値が入力されていません。

私は何をすべきか?

4

3 に答える 3

1

これは、新しいリテラルで正常に機能します。

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"done = %@",@NO];
于 2013-01-23T12:43:43.467 に答える
0

結局、sqliteデータベースブラウザでデータベースにアクセスし、フィールド値のタイプをNumericに変更しました。何らかの理由で、コアデータが互換性のないデータ型としてデータに入力されました.....理由はよくわかりませんが、これはXcodeのバグである可能性があると感じています。私が言ったように、私がフィールドタイプを変更した後、それは今動作します。コアデータでブール値をすぐに使用することはないと思います.....少なくとも、これが問題であった理由を理解するまでは。

于 2012-12-05T16:15:49.597 に答える
0
NSNumber *accessibleFieldValue  = [NSNumber numberWithBool:YES];
[newModel setValue:accessibleValue forKey:@"accessible"];

accessibleFieldValueまたはaccessibleValue?このコードスニペットが正しいと確信している場合は、それが間違っていた場所です。

そしてところで、あなたは簡単に次のように値を設定することができます:

newModel.accessible = [NSNumber numberWithBool:YES];
于 2012-12-05T02:17:19.667 に答える