Основные данные проблемы заказа NSSet связанных объектов - PullRequest
2 голосов
/ 05 апреля 2011

Новичок в Core Data здесь:

Учитывая пациента, я хочу перечислить все аллергии для этого пациента.

Сущность Patient имеет отношение ко многим allergies, определенное в объектной модели.

Дочерняя сущность Allergy также имеет обратную зависимость patient.

Allergy имеет один атрибут, description значение которого является строкой NSS.

Я хочу получить NSSet, возвращенный отношением allergies, упорядочить его по description и поместить в переменную экземпляра массива, которая будет отображена в табличном представлении.

код:

NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];  
NSSet *unorderedAllergies = [selectedPatient valueForKey:@"allergies"];  
NSArray *sortedArray = [unorderedAllergies sortedArrayUsingDescriptors:sortDescriptors];  
[allergiesArray addObjectsFromArray:sortedArray];

Примечания: selectedPatient - это переменная экземпляра родительского NSManagedObject Patient, которая была передана от предыдущего контроллера. allergiesArray - это массив, который я хочу сопоставить с табличным представлением.

Проблема возникает по адресу:

NSArray *sortedArray = [unorderedAllergies sortedArrayUsingDescriptors:sortDescriptors]; 

Отладчик показывает EXEC_BAD_ACCESS в этой строке, и приложение вылетает. Я предполагаю, что это связано со связанными объектами, которые лениво загружаются Core Data (то есть "поврежденные объекты").

Любая помощь очень ценится.

1 Ответ

4 голосов
/ 05 апреля 2011

description - это имя метода NSObject, которое возвращает строку, описывающую объект.Этот метод вызывается, когда вы используете NSLog для регистрации объекта.Все классы, которые наследуются от NSObject, уже имеют метод description.

Не используйте description в качестве имени атрибута или свойства, потому что вы можете не получить то, что ожидаете.Используйте allegryDescription или что-то подобное, чтобы изменить имя свойства на то, что не будет конфликтовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...