1

Сначала я хочу сказать извинения за мой плохой английский. Надеюсь, ты уйдешь.Как сортировать 2d многомерный NSMutablearray

я искал в течение трех дней для моей проблемы, и я не нашел решений :( У меня есть NSMutableArray содержащих NSMutablearrays

Я получаю данные из веб- weboutput выглядит следующим образом:..

(«Ресторан 2», «10», «Отель», «Солдистант», «Германия», «48.81155», «9.10903»), («Клуб 2», «14», «Клуб», «Вайлимдорфер213» , «Германия», «48.814», «9.1311666666667»), («Тайское мясо», «22», «Гастро», «Вайлимдорфер193», «70469 Штутгарт», «48.813833333333» , "9.1328333333333"))

Так что я здесь 3 NSMutableArray внутри одной NSMutableArray. Я показываю Array на моем Tableview с пользовательским cellview.

Мой вопрос в том, как я могу сортировать три внутренних массива с первым значением. (Значения первого значения: Restaurant2, клуб 2, Тайский Meat)

Таким образом, первый массив должен быть:

("Club 2", "14", "Клуб", "Weilimdorfer213", "Германия", "48,814", "+9,1311666666667")

второй:

("Restaurant2", "10", "Гостиница", "Solitudestr", "Германия", "48,81155", "9,10903")

третий:

("Тайский Мясо", "22", "Gastro", "Weilimdorfer193", "70469 Штутгарт", "48.813833333333" , "9.1328333333333")

Какую сортировку следует использовать и как?

На втором этапе я хочу получить расстояние от данных координат и отсортировать расстояние до текущей позиции.

Я уже получил дистанцию. Но как это сортировать?

спасибо!

+0

Вы хотите отсортировать по длине строки первого значения или что-то еще? –

+0

Я хочу отсортировать его по алфавиту. – Martino

ответ

1

Это было бы намного проще, если бы вы создали пользовательский объект для хранения информации вместо использования массива.

Взгляните на этот пример, написанный Dave DeLong в сообщении this.

//ScoreRecord.h 
@interface ScoreRecord : NSObject { 
    NSString * label; 
    NSUInteger score; 
} 
@property (nonatomic, retain) NSString * label; 
@property (nonatomic) NSUInteger score; 
@end 

//ScoreRecord.m 
#import "ScoreRecord.h" 
@implementation ScoreRecord 
@synthesize label, score; 

- (void) dealloc { 
    [score release]; 
    [super dealloc]; 
} 

@end 

//elsewhere: 
NSMutableArray * scores = [[NSMutableArray alloc] init]; 
ScoreRecord * first = [[ScoreRecord alloc] init]; 
[first setLabel:@"Label 1"]; 
[first setScore:1]; 
[scores addObject:first]; 
[first release]; 
//...etc for the rest of your scores 

После того, как вы заселена свой scores массив, теперь вы можете сделать:

//the "key" is the *name* of the @property as a string. So you can also sort by @"label" if you'd like 
NSSortDescriptor * sortByScore = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES]; 
[scores sortUsingDescriptors:[NSArray arrayWithObject:sortByScore]]; 

После этого, ваш scores массив будет отсортирован по возрастанию баллов.

Посмотрите на Collections Programming Topics и NSSortDescriptor.

Смежные вопросы