как отсортировать NSMutableArray из массивов? - PullRequest
1 голос
/ 02 июля 2011

Я пытаюсь отсортировать массив табличного представления без удачи, вот как я пытаюсь это сделать:

    - (void) compare
    {  

        NSMutableArray *temp = [[NSMutableArray alloc] initWithObjects: nil];

        [temp addObjectsFromArray:[self displayedObjects]];


        int a = [[self displayedObjects] count];

        for (int i = 0; i < (a - 1); i++){

            for (int j = 0; j <= (i^2); j++) {

                NSString *temp1 = [temp objectAtIndex:i];

                NSString *temp2 = [temp objectAtIndex:i+1];

                if (temp1 > temp2) {

                    [movieIndex replaceObjectAtIndex:i withObject:temp2];

                    [movieIndex replaceObjectAtIndex:i+1 withObject:temp1];

                }
            }  
        }

        [self movieIndex];

        [[self tableView] reloadData];

    }

displayedObjects - это массив массива, который пользовательМожно добавлять новые объекты.эти объекты являются экземплярами фильма в виде:

В ячейке табличного представления есть название фильма.«в» названии есть табличное представление с подробностями о фильме.Я хочу отсортировать названия фильмов в порядке возрастания, но мой код не работает.


displayedObjects - это набор из 3 строк NSS и 1 номера NSN.Он получает объекты из следующего класса:

#import <Foundation/Foundation.h>

@interface Movie : NSObject
    {
        NSString *_title;
        NSString *_gender;
        NSString *_location;
        NSNumber *_publicationYear;
    }

@property (nonatomic, retain) NSString *location;
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *gender;
@property (nonatomic, retain) NSNumber *publicationYear;

+ (id)movieWithTitle:(NSString *)title
                 gender:(NSString *)gender
                   year:(NSUInteger)year
                location:(NSString *)location;

- (id)initWithTitle:(NSString *)title
                 gender:(NSString *)gender
                   year:(NSUInteger)year
                location:(NSString *)location;

@end

Ответы [ 2 ]

0 голосов
/ 06 июля 2011

Я сделал это с помощью:

NSSortDescriptor *titleSorter= [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];

[movieIndex sortUsingDescriptors:[NSArray arrayWithObject:titleSorter]];
0 голосов
/ 02 июля 2011

Поскольку никто еще не предложил это, и я лично люблю блоки, я предложу альтернативу блоку тому же, что уже предложено:

[myArray sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
     ...
}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...