IOS为数字字段sortingNSMutableArray

我希望外面有人能帮助我:

我有一个未sorting的数组字典,里面有一个包含数字(例如12,0; 1,2; 6,4)的STRING字段(Km)。 如果我做一个正常的SORT,数组将按这种方式sorting:1,2 12,0 6,4

但它应该这样sorting:1,2 6,4 12,0

有没有人有一个示例代码如何做到这一点? 我期待着得到答案。

谢谢你,问候Marco

编辑我的代码以进一步理解:

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计数]:无法识别的select器发送到实例

最好把数字作为NSNumbers而不是string。 这避免了两个问题:

1本地化如果十进制数字,1.2对1,2将根据用户在世界上的位置不同的工作。
2.数字的自然sorting顺序是所期望的。

 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; } ) 
 // 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值,并将其移至数组的后面。