2009-08-03 2 views
2

С помощью кода ниже я создаю запрос на выборку. Проблема, с которой я столкнулась, - получить данные запроса на выборку и что-то сделать с ней, как вставить ее в переменную (например, я пытаюсь сделать это с помощью переменной firstManagedObject). То есть, я не понимаю, что делать с моим «результатом» NSArray, который я создал (показан ниже), чтобы получить пригодные для использования данные, которые не находятся в форме »(entity: Question; id: 0x10b6250 < - coredata: // 90FA9FD7-4CFC-4039-8A0C-40116055CADF/Question/p2; data: fault) "или аналогичные. В NSLog, который я создаю (в последней строке), я регистрирую «результат» NSArray, заполненный с помощью executeFetchRequest (выделено полужирным шрифтом), но я не знаю, как сделать следующий шаг, чтобы получить фактический текст «Вопрос». Любая помощь приветствуется. Благодарю. РезультатыРезультаты выборки основных данных

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; данные: неисправность) ))

Код:

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); 
Смежные вопросы