@count в дескрипторе сортировки, выдающем ошибку «не соответствует значению ключа» в Objective-C - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь отсортировать массив по количеству раз, которое заданное значение присутствует для данного атрибута.

Для этого я использую следующий код:

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title.@count" ascending:NO];
            NSArray *descriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
            NSArray *sortedArray  = [results sortedArrayUsingDescriptors:descriptors];

Однако, пока код компилируется, во время выполнения выдает ошибку:

'[<__NSCFNumber 0xb00000000004e293> valueForUndefinedKey:]: this class is not key value coding-compliant for the key @count.'

Что я делаю не так?

Редактировать:

Массив, о котором идет речь, фактически состоит из результатов выборки основных данных следующим образом:

  self.managedObjectContext = [Model sharedInstance].managedObjectContext;

    [fetchRequest setPredicate:pred];
  //  fetchRequest.resultType = NSDictionaryResultType;
    NSArray<Articles*> *results = [self.managedObjectContext executeFetchRequest:fetchRequest
                                                                error:&error];
        if ([results count]>=1) {

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете использовать +\[NSSortDescriptor sortDescriptorWithKey:ascending:comparator:\].Это занимает блок, который может реализовать любой алгоритм, который вы хотите.Вы можете создать NSCountedSet из [results valueForKey:@"title"] перед операцией сортировки и сделать это в блоке сравнения.Таким образом, у вас есть простой и дешевый способ узнать количество заголовков данного объекта.Вопрос в том, как восстановить этот подсчитанный набор, если / когда объекты меняются (если они могут).

...