NSArray sortedArrayUsingSelector продолжает вызывать ошибки с SIGBART - PullRequest
0 голосов
/ 10 января 2011

РЕДАКТИРОВАТЬ: Вы даже можете использовать пользовательский селектор с "sortedArrayUsingSelector"? Я получил это работать с помощью [[ComicArray valueForKey: @ "Name"] sortedArrayUsingSelector: @selector (caseInsensitiveCompare:)];

Выдается исключение "Не распознает селектор". Кто-нибудь знает, как это отсортировать? ComicArray заполнен ComicDB, который является пользовательским классом, который содержит .Name. Я пытаюсь сортировать на основе ComicDB.Name.

//atempt1
NSArray * comicArray2 = [[ComicArray valueForKeyPath:@"ComicDB.Name"] sortedArrayUsingSelector:@selector(compareByName:)];

//atempt2       
NSArray * compicArray2 = [ComicArray sortedArrayUsingSelector:@selector(compareByName:)];

- (NSComparisonResult)compareByName:(id)other
{
    return [[self valueForKeyPath: @"ComicDB.Name"] caseInsensitiveCompare:[other valueForKeyPath: @"ComicDB.Name"]];
}

Спасибо, -Mike

Ответы [ 2 ]

3 голосов
/ 10 января 2011

sortedArrayUsingSelector: выполняет селектор для объектов в массиве, чтобы определить их порядок.CompareByName: метод должен быть в классе ComicDB.Следующая реализация будет работать, если у вас есть определенные методы доступа.Если вы этого не сделаете, измените Name на valueForKey:@"Name".

- (NSComparisonResult)compareByName:(ComicDB *)other {
    return [[self name] caseInsensitiveCompare:[other name]];
}
1 голос
/ 24 января 2011

23 января 2011 Я не мог заставить это работать.Вместо этого я использовал метод сортировки iOS 4.0:

NSArray * myArraySorted = [ComicArray sortedArrayUsingComparator:^(id obj1, id obj2)
                          {
                              return [[obj1 valueForKey:@"Name"] caseInsensitiveCompare: [obj2 valueForKey: @"Name"]]; 
                              // return [[obj1 Name] caseInsensitiveCompare: [obj2 Name]];
                          }];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...