Вне области действия в сгенерированном массиве KVC - PullRequest
0 голосов
/ 12 сентября 2009

Я пытаюсь создать массив объектов из иерархии других объектов, например:

код 1:

childController.names = [[NSMutableArray alloc] init];

for (Person *p in list.persons) {
    [childController.names addObject:p.name];
}

код 2:

NSMutableArray *testArray = [list.persons valueForKey:@"name"];

Первый фрагмент кода работает отлично, возвращая массив имен людей. Напротив, второй возвращает массив с правильным количеством имен людей, но они отображаются как «Out of scope», когда я отлаживаю код в XCode. Когда я пытаюсь получить доступ к одному из них, приложение завершается с:

Завершение работы приложения из-за отсутствия связи исключение NSInvalidArgumentException, причина: '*** - [NSCFSet objectAtIndex:]: нераспознанный селектор отправлен на экземпляр 0x72e0620'

Список, люди - это управляемые объекты Core Data, если это имеет значение .. Что я делаю не так ???

1 Ответ

1 голос
/ 13 сентября 2009

Вы должны проверить тип persons. Похоже, что это NSSet, а valueForKey: на NSSet вернет NSSet. Этот фрагмент кода должен работать как положено:

NSSet* testSet = [list.persons valueForKey:@"name"];
...