Написать SortDescriptor для переносимого атрибута в основных данных? - PullRequest
0 голосов
/ 27 июля 2010

У меня есть заголовок объекта, и у него есть атрибут NSDictionary, который был объявлен трансформируемым в модели.Теперь я хочу не сортировать массив заголовков в fetchedRequestController.И передача нулевого или нулевого объекта дает ошибку.Пожалуйста, помогите срочно.

Позвольте мне перефразировать с прошлого раза: если у меня есть сущность, с трансформируемыми заголовками атрибута.Я изменяю тип идентификатора на NSDictionary в сгенерированном классе.Теперь мне нужно получить доступ к ключам словаря как entity.attribute name.key ... я получаю сообщение об ошибке, поскольку этот класс не является жалобой на кодирование значения ключа для ключа: (ключ) ... что является решением этой проблемы

</p>

<code>// Create and configure a fetch request with the Book entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"headers" inManagedObjectContext:self.tableCellGenericMoc];
[fetchRequest setEntity:entity];

// Create the sort descriptors array.
NSSortDescriptor *headersDescriptor = [[NSSortDescriptor alloc] initWithKey:@"headersDictionary" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:headersDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];

// Create and initialize the fetch results controller.
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.tableCellGenericMoc sectionNameKeyPath:@"headresDictionary" cacheName:@"Root"];
self.fetchedResultsController = aFetchedResultsController;
fetchedResultsController.delegate = self;
</code>

вышеупомянутый селектор выдает ошибку, потому что он не может сортировать headersDictionary ...

1 Ответ

1 голос
/ 28 июля 2010

Почему вы храните NSDictionary в Core Data?Проще говоря, делать это неправильно.Если вы хотите что-то вроде словаря, просто создайте дочерний объект на другом конце отношения один ко многим, у которого есть имя и значение.

Если вы спроектируете свою модель правильно, у вас не будет проблемы, с которой вы сейчас сталкиваетесь, и вы можете использовать предикат для фильтрации и дескриптор сортировки в вашем NSFetchRequest напрямую.

Обновление

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

Все равно не имеет никакого смысла.Описанный мной дизайн идентичен наличию словаря внутри трансформируемого объекта, за исключением того, что он полезен на уровне базовых данных.Вам не нужно иметь фиксированные ключи в дизайне, который я описал.

Переосмыслите свой дизайн, и этот вопрос станет неактуальным.

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