我希望外面有人可以帮助我:
我有一个未排序的字典数组,里面有一个STRING字段(Km),其中包含数字(例如12,0; 1,2; 6,4)。如果我执行正常的SORT,则数组将按以下方式排序: 1,2 12,0 6,4
但它应该这样排序: 1,2 6,4 12,0
有人有一个示例代码怎么做? 我期待着得到答案。
谢谢和问候 马可
编辑我的代码以进一步理解:
NSMutableArray *tempArray = [[NSArray alloc] init];
self.Digger = tempArray;
[tempArray release];
self.Digger = [self.Diggers objectForKey:@"Rows"];
NSSortDescriptor * sort = [[[NSSortDescriptor alloc] initWithKey:@"KM" ascending:true] autorelease]; [self.Digger sortUsingDescriptors:[NSArray arrayWithObject:sort]];
self.Digger = sort;
但是这给了我日志中的以下错误: - [NSSortDescriptor count]:无法识别的选择器发送到实例
答案 0 :(得分:3)
最好将数字作为NSNumbers而不是字符串放入字典中。这避免了两个问题:
1本地化如果是十进制数,1.2对1,2将根据用户在世界上的位置而有所不同。
2。数字的自然排序顺序是期望的。
NSArray *a = [NSArray arrayWithObjects:
[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:12.0] forKey:@"Km"],
[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat: 1.2] forKey:@"Km"],
[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat: 6.4] forKey:@"Km"],
nil];
NSSortDescriptor * sort = [[[NSSortDescriptor alloc] initWithKey:@"Km" ascending:true] autorelease];
NSArray *sa = [a sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
NSLog(@"sa: %@", sa);
NSLog输出:
2011-10-30 10:08:58.791 TestNoARC[86602:f803] sa: (
{
Km = "1.2";
},
{
Km = "6.4";
},
{
Km = 12;
}
)
答案 1 :(得分:0)
// assume toBeSorted is your array of dictionaries and the key for the int values is @"myInt"
NSSortDescriptor *sort = [[[NSSortDescriptor alloc] initWithKey:@"myInt" ascending:YES] autorelease];
[toBeSorted sortUsingDescriptors:[NSArray arrayWithObject:sort]];
这可以让你接近你想要的地方。 如果您总是使用非负数,则可以检查第一个对象是否代表您的0值并将其移动到数组的后面。