以数字为键值对 NSDictornary 进行排序
Sort NSDictornary with numbers as the key value
我有 NSMutableDictionary
个 mutableArrays
作为对象;和键值的数字。
我想对 dictionary
.
进行排序
NSArray *sortedDict = [[NSArray alloc] init];
sortedDict = [self.myDict keysSortedByValuesUsingSelector:@selector(compare:)];
NSLog(@"%@", sortedDict);
当我 运行 应用程序时,它崩溃并出现以下错误:
'-[__NSArrayM compare:]: unrecognized selector sent to instance 0x7f9202f2ce50
我做错了什么?
错误消息强烈提示出了什么问题:
[__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
有值。
我有 NSMutableDictionary
个 mutableArrays
作为对象;和键值的数字。
我想对 dictionary
.
NSArray *sortedDict = [[NSArray alloc] init];
sortedDict = [self.myDict keysSortedByValuesUsingSelector:@selector(compare:)];
NSLog(@"%@", sortedDict);
当我 运行 应用程序时,它崩溃并出现以下错误:
'-[__NSArrayM compare:]: unrecognized selector sent to instance 0x7f9202f2ce50
我做错了什么?
错误消息强烈提示出了什么问题:
[__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
有值。