核心数据获取结果
Posted
技术标签:
【中文标题】核心数据获取结果【英文标题】:core data fetch results 【发布时间】:2009-08-03 16:24:22 【问题描述】:使用下面的代码,我正在创建一个获取请求。我遇到的问题是获取获取请求数据并对其进行处理,例如将其放入变量中(就像我在下面尝试使用 firstManagedObject 变量一样)。即,我不明白如何处理我创建的“结果”NSArray(如下代码所示)以获取不是“(实体:问题;id:0x10b6250
NSLog 结果:
获取请求 getQuestionsByParent:找到 2 个(子变量: formId = "9822217D-6A55-4475-88EC-E2552B336E1B"; 节数 = 2; , 结果:( (实体:问题;id:0x10a8720 x-coredata://90FA9FD7-4CFC-4039-8A0C-40116055CADF/Question/p2;数据:故障), (实体:问题;id:0x1092920 x-coredata://90FA9FD7-4CFC-4039-8A0C-40116055CADF/Question/p4;数据:故障) ))
代码:
NSManagedObjectContext *moc_ = [self managedObjectContext];
NSMutableDictionary *dictionary=[[NSMutableDictionary alloc]init];
[dictionary setObject:section.ordinal forKey:@"sectionNumber"];
[dictionary setObject:section.parent.id forKey:@"formId"];
NSError *error = nil;
NSManagedObjectModel *model = [[moc_ persistentStoreCoordinator] managedObjectModel];
NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName:@"getQuestionsByParent" substitutionVariables:dictionary];
NSAssert(fetchRequest, @"Can't find question fetch request");
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"ordinal" ascending:YES];
NSArray *sortDescriptors = [[NSMutableArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSArray *result = [[NSArray alloc] init];
result = [moc_ executeFetchRequest:fetchRequest error:&error];
//return result;
NSLog(@"fetch request getQuestionsByParent: %u found (sub variables:%@, results:%@)", [result count], dictionary, result);
NSManagedObject *firstManagedObject = [result objectAtIndex:0];
【问题讨论】:
【参考方案1】:你有你的提取,你有数据。如果您已经为对象实现了自定义子类,您可以只查询属性,如果没有,您可以使用 KVC 针对对象访问它们。例如,假设您有一个名为“myAttribute”的属性:
NSManagedObject *firstManagedObject = [result objectAtIndex:0];
NSLog(@"firstObject.myAttribute: %@", [firstObject valueForKey:@"myAttribute"]);
如果您有一个对象(问题)的自定义子类,将属性声明为动态属性,那么它将是:
Question *firstQuestion = [result objectAtIndex:0];
NSLog(@"firstQuestion.myAttribute: %@", firstQuestion.myAttribute);
【讨论】:
以上是关于核心数据获取结果的主要内容,如果未能解决你的问题,请参考以下文章