Ordena NSArray con objetos personalizados

En mi proyecto Xcode tengo las siguientes clases:

Dirección

@interface LDAddress : NSObject{
    NSString *street;
    NSString *zip;
    NSString *city;
    float latitude;
    float longitude;
}

@property (nonatomic, retain) NSString *street;
@property (nonatomic, retain) NSString *zip;
@property (nonatomic, retain) NSString *city;
@property (readwrite, assign, nonatomic) float latitude;
@property (readwrite, assign, nonatomic) float longitude;

@end

Ubicación

@interface LDLocation : NSObject{
    int locationId;
    NSString *name;
    LDAddress *address;
}
@property (readwrite, assign, nonatomic) int locationId;
@property (nonatomic, retain) LDAddress *address;
@property (nonatomic, retain) NSString *name;

@end

En una subclase de UITableViewController, hay una NSArray que contiene muchos objetos sin clasificar de LDLocations. Ahora, quiero ordenar los objetos de NSArray ascendiendo en función de la propiedadciudad de una dirección de LD.

¿Cómo puedo ordenar la matriz utilizando NSSortDescriptor? Intenté lo siguiente, pero la aplicación se vuelca al ordenar la matriz.

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"Address.city" ascending:YES];
[_locations sortedArrayUsingDescriptors:@[sortDescriptor]];

Respuestas a la pregunta(4)

Su respuesta a la pregunta