2013-02-15 3 views
1

Мне удалось создать Array из MyLocation объектов с их дальностью собственности, установленной в первой из 2 вкладок в tabBarController. В моей 2-ой вкладке я получаю это как так в viewDidLoad:Как сделать NSSortDescriptor для работы с массивом?

[self setAnnotationsToSort:myDelegate.annotationsToSort]; 

и сразу после этой строки я называю этот метод:

-(void)sort{ 
    NSSortDescriptor *sortDescriptor; 
    sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES] autorelease]; 
    NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; 
    NSArray *sortedArray; 
    sortedArray = [self.annotationsToSort sortedArrayUsingDescriptors:sortDescriptors]; 
    [self.tableView reloadData]; 
} 

, который должен упорядочить Array. Однако мой tableView в настоящее время загружается с несортированной версией Array, self.annotationsToSort. Как перезагрузить tableView, но заставить его использовать новый sortedArray?

ответ

5

Вы ничего не делаете с sortedArray. Попробуйте

self.annotationsToSort = [self.annotationsToSort sortedArrayUsingDescriptors:sortDescriptors]; 
+0

да, я пробовал это, но, кстати, метод sortedArrayUsingDescriptors возвращает NSArray, а мой self.annotationsToSort - это NSMutableArray – marciokoko

+0

Просто сделайте это 'mutableCopy', чтобы вы могли хранить его как' NSMutableArray' –

2

Вызов:

self.annotationsToSort = sortedArray;

Перед тем, как позвонить [self.tableView reloadData];

0

я пропускал этот шаг:

self.annotationsToSort = [(NSArray*)sortedArray mutableCopy]; 

спасибо ребята