результаты выборки основных данных - PullRequest
2 голосов
/ 03 августа 2009

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

NSLog результаты:

запрос на выборку getQuestionsByParent: 2 найдено (под переменные: { formId = "9822217D-6A55-4475-88EC-E2552B336E1B"; sectionNumber = 2; }, Результаты:( (сущность: Вопрос; идентификатор: 0x10a8720 x-coredata: // 90FA9FD7-4CFC-4039-8A0C-40116055CADF / Question / p2; данные: ошибка), (сущность: вопрос; идентификатор: 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 Ответ

3 голосов
/ 03 августа 2009

У вас есть выборка, у вас есть данные. Если вы реализовали пользовательские подклассы для объекта, вы можете просто запросить свойства, если нет, вы можете использовать KVC для доступа к ним по объектам. Например, если у вас есть атрибут myAttribute, то:

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

И если у вас есть собственный подкласс для объекта (Вопрос), который объявляет атрибуты как динамические свойства, то это будет:

Question *firstQuestion = [result objectAtIndex:0];
NSLog(@"firstQuestion.myAttribute: %@", firstQuestion.myAttribute);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...