2014-04-28 1 views
1

J'essaie de trier un tableau d'objets UserWrapper. L'objet wrapper contient l'objet User, et l'objet User contient la propriété UserName (que je veux trier par).Tri du tableau des objets wrapper dans iOS à l'aide de NSSortDescriptor

Il nous suffit de trier un tableau d'utilisateurs (source), mais la couche ajoutée de UserWrapper complique les choses pour moi. Aidez-moi, s'il vous plaît!

Voici mon code, qui a travaillé pour un simple tableau d'utilisateur:

NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"UserName" 
                   ascending:YES 
                   selector:@selector(localizedCaseInsensitiveCompare:)] ; 

NSArray *descriptors = [NSArray arrayWithObject:nameDescriptor]; 
NSMutableArray *contactsStartingWithKey = [nameIndexesDictionary objectForKey:aKey]; 
[contactsStartingWithKey sortUsingDescriptors:descriptors]; // Exception thrown here because UserName is not a property of UserWrapper, but of UserWrapper.User 

Répondre

1

L'argument clé du descripteur de tri peut aussi par un chemin de clé , dans votre cas:

[[NSSortDescriptor alloc] initWithKey:@"User.UserName" 
          ascending:YES 
          selector:@selector(localizedCaseInsensitiveCompare:)] ; 
1

Bien que l'API et la documentation de NSSortDescriptor soient un peu incohérentes, le paramètre "clé" est en réalité un chemin de clé. Donc, vous pouvez simplement spécifier @"User.UserName" comme clé et votre code devrait fonctionner.

Questions connexes