NSSortDescriptor сортировка по максимальному значению свойства в NSSet - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь использовать NSSortDescriptor и сортирует «Единицы», которые имеют набор «Устройств». Каждое устройство имеет уровень сигнала. Я бы хотел отсортировать единицы измерения по устройству с самым высоким уровнем сигнала. Я только что нашел страницу об операторах сбора, и я думаю, что я близко, но я все еще не могу заставить ее работать.

NSSortDescriptor *rssiSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"devices.@max.signalStrength" ascending:[self sortByRSSIAscending]];    

Я предполагаю, что проблема в том, что устройства нельзя сравнивать напрямую друг с другом, поэтому оператор @max не работает. Есть ли способ переопределить это для сравнения по уровню сигнала?

Я добавил это к моей модели устройства:

- (NSComparisonResult)compare:(PersistedNokeDevice*)other
{
if (self.signalStrength < other.signalStrength) {
    return NSOrderedAscending;
}
if (self.signalStrength == other.signalStrength) {
    return NSOrderedSame;
}
return NSOrderedDescending;
}

Я получаю эту ошибку Keypath containing KVC aggregate where there shouldn't be one; failed to handle devices.@max.signalStrength

Есть ли способ заставить это работать или мне нужно переосмыслить свою стратегию?

...