Сортировка с помощью sortedArrayUsingDescriptors и Key Paths

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

@interface Place : NSObject {

}

@property (nonatomic, copy) NSString *country;
@property (nonatomic, copy) NSString *city;
@property (nonatomic, retain) NSURL   *imageURL;


-(id) initWithCountry: (NSString *) aCountry city: (NSString *) aCity imageUrl: (NSURL *) aUrl;


@end

, и я пытаюсь отсортировать его с помощью sortedArrayUsingDescriptors по стране и городу. В документации для NSSortDescriptor указано, что аргумент initWithKey: является ключевым путем.

Однако, если я попытаюсь использовать NSortDescriptor, например:

NSSortDescriptor *country = [[[NSSortDescriptor alloc] initWithKey:@"country.city" ascending:YES]autorelease];

, я получаю сообщение об ошибке:

NSMutableSet *bag = [[[NSMutableSet alloc] init] autorelease];
[bag addObject:[[Place alloc] initWithCountry:@"USA" 
                                         city:@"Springfield" 
                                     imageUrl:[NSURL URLWithString:@"http://www.agbo.biz"]]];
[bag addObject:[[Place alloc] initWithCountry:@"Afghanistan" 
                                         city:@"Tora Bora" 
                                     imageUrl:[NSURL URLWithString:@"http://www.agbo.biz"]]];
[bag addObject:[[Place alloc] initWithCountry:@"USA" 
                                         city:@"Chicago" 
                                     imageUrl:[NSURL URLWithString:@"http://www.agbo.biz"]]];

[bag addObject:[[Place alloc] initWithCountry:@"USA" 
                                         city:@"Chicago" 
                                     imageUrl:[NSURL URLWithString:@"http://www.google.com"]]];


NSSortDescriptor *sort = [[[NSSortDescriptor alloc] initWithKey:@"country.city" ascending:YES]autorelease];
NSArray *sorted = [bag sortedArrayUsingDescriptors:[NSArray arrayWithObjects: sort, nil]];

* Завершение работы приложения из-за неперехваченное исключение 'NSUnknownKeyException', причина: '[ valueForUndefinedKey:]: этот класс не соответствует кодированию ключевого значения для ключевой город. '

Могу я использовать ключевой путь или нет? Что я делаю не так?

10
задан Ken Thomases 25 April 2014 в 08:07
поделиться