NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:kRestaurantListDistance ascending:YES selector:@selector(compare:)];
[restaurantList sortUsingDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];
上面是我的字典值数组餐厅名称和密钥。我使用了以下代码,但没有正确排序。它显示了序列19.3,19.4,2.1,2.1。我认为它只是比较第一个数字
organisation.datapoint_set.filter'timestamp='2014-12-12'
请告诉我正确的代码,以升序排序数组。
答案 0 :(得分:1)
你可以试试这个:
array = [[NSMutableArray alloc] initWithArray:[array sortedArrayUsingComparator:^(id obj1, id obj2) {
float distance1 = [[obj1 objectForKey:@"distance"] floatValue];
float distance2 = [[obj2 objectForKey:@"distance"] floatValue];
if (distance1 < distance2) {
return (NSComparisonResult)NSOrderedDescending;
} else if (distance1 > distance2) {
return (NSComparisonResult)NSOrderedAscending;
} else {
return (NSComparisonResult)NSOrderedSame;
}
}]];
答案 1 :(得分:0)
如果按第一个数字排序,这意味着您的数字实际上只是字符串。
两种可能的方法:
NSNumbers
而不是简单的浮点数)initWithKey:ascending:comparator:
)您使用哪种方法取决于您之后对字典所做的操作。如果你以后再次需要数字,1可能是最好的;否则2。
答案 2 :(得分:0)
你可以试试这个。它会起作用:
arrWholeArrImg=[NSMutableArray sortArray:_arrWholeArrImg string:@"CategoryName"];
+(NSMutableArray *)sortArray:(NSMutableArray *)arr string:(NSString *)key {
NSSortDescriptor *sortDescriptor;
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:key
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray = [arr sortedArrayUsingDescriptors:sortDescriptors];
arr = [sortedArray mutableCopy];
return arr;
}