核心数据&生成模型实体

时间:2010-11-27 14:48:29

标签: objective-c xcode core-data

标准新手问题。我已经为iOS应用程序创建了一个数据模型。我可以使用NSEntityDescription对象从各种视图中创建,更新和删除模型中的实体。

假设我有一个从获取请求返回的可变对象数组。当我没有从实体模型中生成对象定义时,如何遍历每个?生成的对象定义是指数据模型包中描述的实体的头和体类定义。

1 个答案:

答案 0 :(得分:0)

所有CoreData实体都派生自NSManagedObject,并且可以通过键值编码访问这些数据库中的所有数据库数据。您可以从模型中获得您需要知道的最低要求。您不一定需要标题。

例如与 NameEntity 有关系的实体 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是我自己的类别。您可能会发现它很有用。

@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