すべてのCoreDataエンティティはNSManagedObjectから派生し、それらのすべてのデータベースデータはキー値エンコーディングでアクセスできます。あなたが知る必要がある最小限は、モデルから得ることができます。ヘッダーは必ずしも必要ではありません。
例えばエンティティは、属性FIRSTNAME
NSArray *results = [managedObjectContext queryEntityForName:@"PersonEntity" predicateFormat:nil argumentArray:nil];
for(NSManagedObject *object in results)
{
NSString *name = [object valueForKeyPath:@"nameobject.firstname";
[self doSomething:name];
}
queryEntityForNameとNameEntityに関係を持っているPersonEntityは、私自身のカテゴリです。それが役に立つかもしれません。
@implementation NSManagedObjectContext(VMQueryAdditions)
-(NSArray *)queryEntityForName:(NSString *)name predicateFormat:(NSString *)pstring argumentArray:(NSArray *)arr
{
NSEntityDescription *entity = [NSEntityDescription entityForName:name inManagedObjectContext:self];
NSFetchRequest *fetch = [[[NSFetchRequest alloc] init] autorelease];
[fetch setEntity:entity];
NSPredicate *pred;
if(pstring)
{
if(arr) pred = [NSPredicate predicateWithFormat:pstring argumentArray:arr];
else pred = [NSPredicate predicateWithFormat:pstring];
[fetch setPredicate:pred];
}
NSError *error = nil;
NSArray *results = [self executeFetchRequest:fetch error:&error];
if (error) {
NSLog(@"MOC Fetch - Unresolved error %@, %@", error, [error userInfo]);
return [NSArray array];
}
return results;
}
@end
こんにちはウォーレン。あなたの答えをありがとう。 NSManagedObjectは本当に 'for'ループに必要なクラスでした。 –
管理対象オブジェクトを簡単に解析する方法はありますか?たとえば、管理対象オブジェクトのインスタンスを表現するクラスと、そのすべてのプロパティと他のオブジェクトとの関係を持つクラスはありますか? –
あなたがここで何を望んでいるか分かりません。 NSManagedObjectインスタンスは、データベーステーブルエントリの表現です。 NSEntityDescriptionからエンティティのすべての属性と関係情報を取得できます。 –