Как отсортировать 2d многомерный NSMutablearray - PullRequest
1 голос
/ 06 февраля 2012

Сначала я хочу извиниться за мой плохой английский.Я надеюсь, что вы поймете.

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

Я получаю данные из Интернета.выглядит так:

(("Ресторан2", "10", "Отель", "Солитудр", "Германия", "48.81155", "9.10903"), ("Клуб 2", "14 "," Club "," Weilimdorfer213 "," Germany "," 48.814 "," 9.1311666666667 "), (" Thai Meat "," 22 "," Gastro "," Weilimdorfer193 "," 70469 Stuttgart "," 48.813833333333 ", "9.1328333333333"))

Итак, у меня есть 3 NSMutablearray внутри одного NSMutablearray. Я показываю массив в моем Tableview с пользовательским просмотром ячеек.

Мой вопрос, как я могуотсортировать три внутренних массива по первому значению (значения первого значения: Restaurant2, Club 2, Thai Meat)

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

("Club 2"), "14", "Club", "Weilimdorfer213", "Germany", "48.814", "9.1311666666667")

секунда:

("Restaurant2", "10", "Hotel", "Solitudestr", "Germany", "48.81155", "9.10903")

треть:

(«Тайское мясо», «22», «Гастро», «Weilimdorfer193», «70469 Штутгарт», «48.813833333333», «9.1328333333333»)

Какая функция сортировки должнаЯ использую и как?

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

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

Большое спасибо!

1 Ответ

1 голос
/ 06 февраля 2012

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

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

//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массив будет отсортирован по возрастанию партитуры.

Взгляните на Темы программирования коллекций и NSSortDescriptor .

...