我有一个NSArray,它包含NSDictionary对象,其键是NSNumber对象。我想使用valueForKeyPath计算最大值。如果我在以下示例中使用字符串,我将使用valueForKeyPath:@“@ max.OHLCClose”。我如何使用NSNumber对象作为键进行相同的操作?
typedef enum _OHLCField {
OHLCOpen,
OHLCClose
} OHLCField;
NSMutableArray *newData = [NSMutableArray array];
newData addObject: [NSDictionary dictionaryWithObjectsAndKeys:
[NSDecimalNumber numberWithDouble:fOpen], [NSNumber numberWithInt:OHLCOpen],
[NSDecimalNumber numberWithDouble:fClose], [NSNumber numberWithInt:OHLCClose]];
答案 0 :(得分:1)
KVC要求键是字符串:
键是一个标识对象特定属性的字符串。通常,键对应于接收对象中的访问器方法或实例变量的名称。密钥必须使用ASCII编码,以小写字母开头,并且可能不包含空格。
所以答案很遗憾,你不能用valueForKeyPath:
来做到这一点。
如果您需要使用NSNumber
作为密钥,则必须自己编写算法代码 - 只需迭代数组并找到与密钥相关的最大值。您可以将算法包装在一个类别中,使其成为NSArray
的“部分”。