NSSortDescriptor按NSSet中的最大属性值排序

时间:2018-08-27 21:27:57

标签: objective-c core-data nssortdescriptor kvc

我正在尝试使用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

是否有办法使这项工作奏效,或者我需要重新考虑自己的策略?

0 个答案:

没有答案