2010-11-27 101 views
0

标准的新手问题。我为iOS应用程序创建了一个数据模型。我能够通过使用NSEntityDescription对象在各种视图中创建,更新和删除模型中的实体。核心数据和生成模型实体

说出是否存在从提取请求返回的可变对象数组。当我没有从实体模型生成对象定义时,如何循环遍历每一个对象?通过生成的对象定义,我的意思是数据模型包中描述的实体的头和主体类定义。

回答

0

所有的CoreData实体都是从NSManagedObject派生而来的,所有的数据库数据都可以通过键值编码来访问。您需要知道的最低限度可以从模型中获得。您不一定需要标题。

例如实体PersonEntity其与属性

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的关系。你可能会觉得它很有用。

@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 
+0

嗨沃伦。谢谢您的回答。 NSManagedObject确实是'for'循环所需的类。 – 2010-11-28 17:34:14