标准新手问题。我已经为iOS应用程序创建了一个数据模型。我可以使用NSEntityDescription对象从各种视图中创建,更新和删除模型中的实体。
假设我有一个从获取请求返回的可变对象数组。当我没有从实体模型中生成对象定义时,如何遍历每个?生成的对象定义是指数据模型包中描述的实体的头和体类定义。
答案 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