我有一个NSMutableDictionary
mutableArrays
作为对象;和键值的数字。
我想对dictionary
进行排序。
NSArray *sortedDict = [[NSArray alloc] init];
sortedDict = [self.myDict keysSortedByValuesUsingSelector:@selector(compare:)];
NSLog(@"%@", sortedDict);
当我运行应用程序时,它崩溃并出现以下错误:
'-[__NSArrayM compare:]: unrecognized selector sent to instance 0x7f9202f2ce50
我做错了什么?
答案 0 :(得分:0)
错误消息强烈暗示出现了什么问题:
[__NSArrayM compare:]: unrecognized selector sent to instance 0x7f9202f2ce50
它告诉您尝试在数组上调用compare:
方法(确切地说是一个可变数组)。你的字典有NSNumber
个用于键和数组的值,因此尝试比较值,而不是键!
这非常有意义:方法名称告诉您它将比较值,而不是键:
keysSortedByValuesUsingSelector
^^^^^^
如果您想按键对值进行排序,请检索所有键,对其进行排序,然后按键的排序顺序检索相应的值:
NSArray *sortedKeys = [myDict.allKeys sortedArrayUsingSelector:@selector(compare:)];
NSMutableArray *sortedVals = [dict objectsForKeys:sortedKeys notFoundMarker:nil];
此时你有两个数组,它们之间有一对一的对应关系:sortedKeys
有密钥,sortedVals
有值。