请帮帮我 我想对NSMutableArray进行排序,是的,我可以通过
来完成NSSortDescriptor *sortPoint = [[NSSortDescriptor alloc] initWithKey:@"point" ascending:YES];
[hightScore sortUsingDescriptors:[NSArray arrayWithObject:sortPoint]];
但是在NSMuatableArray(hightScore)中,我有2个像这样的NSMutableDictionary
[item setObject:@"player_name" forKey:@"name"];
[item setObject:@"100" forKey:@"point"];
当我按关键字“point”排序时,它就是字符串,它就像这样给我 100> 20> 30> 50 相反应该是 20> 30> 50> 100
有任何想法。
答案 0 :(得分:1)
有三种解决方案:
@"100"
)。 NSNumber对象应该在数字上进行比较。向数组发送sortUsingComparator:
或sortUsingFunction:context:
消息而不是sortUsingDescriptors:
,传递一个块或函数来检索字符串并以数字方式对它们进行比较(通过发送它们{{3}带NSNumericSearch
选项的消息。)
请注意,块或函数将传递整个字典,而不是字符串,因为它无法知道要提取哪些字符串,因此您必须自己从字典中获取字符串才能进行比较它们。
compare:options:
替换为具有model objects的字典替换字典键。如果使用数字类型声明属性(例如,NSUInteger
),那么当数组使用KVC访问属性时,它将获得NSNumber对象,如上面#1所述,它们应该在数字上进行自我比较。 我会选择#3。
答案 1 :(得分:1)
执行此操作的最佳方法是将您的号码存储为NSNumbers:
[index addObject:[[NSNumber alloc] initWithInt:number]];
然后,您可以使用[NSNumber compare:]
方法对数组进行排序:
[index sortUsingSelector:@selector(compare:)];
答案 2 :(得分:0)
NSMutableArray* tempArray = [NSMutableArray arrayWithArray:anArray];
[tempArray sortUsingSelector:@selector(caseInsensitiveCompare:)];
我在一些代码中使用它?这有用吗?
另外,只是注意到你将数组对象设置为字符串,我假设这也是一个问题。尝试将它们添加为NSIntegers或ints ...这样可以吗?