2009-08-03 75 views
2

用下面的代码创建一个获取请求。我遇到的问题是获取请求数据并执行一些操作,比如将其放入一个变量中(就像我正在试图用firstManagedObject变量所做的那样)。即,我不明白如何处理我创建的“结果”NSArray(显示在下面的代码中)以获取不是“(实体:问题;编号:0x10b6250 < - coredata:// 90FA9FD7-4CFC-4039-8A0C-40116055CADF/Question/p2; data:fault)“或类似内容。在我创建的NSLog中(最后一行),我记录了从executeFetchRequest填充的“结果”NSArray(以粗体显示),但我不知道如何进行下一步获取实际的“问题”文本。任何帮助表示赞赏。谢谢。核心数据获取结果

的NSLog结果:

取请求getQuestionsByParent:2实测值(子变量:{ formId = “9822217D-6A55-4475-88EC-E2552B336E1B”; sectionNumber = 2;} ,结果:( (entity:Question; id:0x10a8720 x-coredata:// 90FA9FD7-4CFC-4039-8A0C-40116055CADF/Question/p2; data:fault), (entity:Question; id:0x1092920 x-coredata:// 90FA9FD7- 4CFC-4039-8A0C-40116055CADF/Question/p4; data:fault) ))

代码:

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]; 

回答

3

你有你的取下,你有数据。如果您已经为对象实现了自定义子类,则只需查询属性即可,如果不是,则可以使用KVC根据对象访问它们。因此,举例来说,假设你有所谓的“myAttribute”,那么属性:

NSManagedObject *firstManagedObject = [result objectAtIndex:0]; 
NSLog(@"firstObject.myAttribute: %@", [firstObject valueForKey:@"myAttribute"]); 

如果你有对象(问题)自定义子类声明的属性动态属性,那么这将是:

Question *firstQuestion = [result objectAtIndex:0]; 
NSLog(@"firstQuestion.myAttribute: %@", firstQuestion.myAttribute);