11

CoreData 属性が空かどうかを確認する方法を見つけたいと思っています。属性自体はバイナリ データ型です。属性が空の場合、クラスにデータをダウンロードしてこの属性に保存するように指示できます。

CoreData のドキュメントによると、オブジェクトが存在するかどうかを確認するためにフェッチを続けるべきではありません。これを行う方法さえあるのでしょうか?この「法律」を破ることなく?

これは、CoreData を使用する最初の試みです。後でコードに追加していますが、これは少し面倒ですが、全体として、これまでのところすべてがうまくいっているようです. 属性に値があるかどうかをチェックする論理的な方法を理解する必要があります。そうでない場合は、新しいデータをダウンロードして保存する必要があります。ある場合は、属性の内容を使用するだけです。

アップデート :

これを中断しようとして読んでいたCoreDataフレームワークでこのメソッドを見つけました。それが役立つかどうかわからない..どう思いますか?

willAccessValueForKey : アクセス通知を監視するキー値のサポートを提供します。

  • (void)willAccessValueForKey:(NSString *)key パラメーター key レシーバーのプロパティの 1 つの名前。詳細については、didAccessValueForKey: を参照してください。次の例に示すように、nil のキー値を使用してこのメ​​ソッドを呼び出して、障害が発生したことを確認できます。

[aManagedObject willAccessValueForKey:nil];

本当にわからない..私が理解していないことは、アクセス通知を監視するキー値のサポートを提供することです。???

4

1 に答える 1

12

その通知は、値がいつアクセスされるかに関するものです。

私があなたを正しく理解していれば、エンティティが存在するかどうかではなく、エンティティ内の属性を確認したいと考えています。したがって、オプションの属性としてマークされていると思います。

rawData というバイナリ データ属性があるとします。この属性のデータ セットがないデータベース内のすべての @"MyEntity" オブジェクトを検索する場合は、このフェッチ リクエストを発行します。

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"];
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0];
于 2012-04-26T02:58:47.113 に答える