Je suis nouveau à l'appui sur les données de base de l'iPhone 3.0 de l'iPhone 3.0 d'Apple et je suis relativement nouveau dans le développement de l'iPhone. Ma question est sur un tri légèrement plus "complexe" que celui couvert dans les documents. Je soupçonne que je fais une hypothèse fondamentale incorrecte. P>
Comment puis-je régler une collection pré-extraite d'objets gérés par une propriété contenue plusieurs couches plus profondes dans la collection? p>
exemple: Farm a 1 à plusieurs pour Cowboy (Farm.Cowboys) Cowboy a 1 à 1 à une personne (cowboy.person) Personne a nommé (personne.lastname) p>
Le graphique de l'objet entier a été récupéré et les cow-boys sont affichés dans un UitailView. Maintenant, comment puis-je trier les cow-boys par lastname? Ai-je besoin de les récupérer? Et si oui, comment puis-je faire cela avec un tri imbriqué? P>
Actuellement, j'essaie de trier un NsmutableArray de Cowboys ([Farm.Cowboys Allobjects]) qui convient à ces propriétés sur Cowboy. Mais je ne suis pas sûr de faire ce travail lors du tri d'une collection de cow-boys par cowboy.person.lastname? P>
4 Réponses :
Espérons que quelqu'un a une meilleure solution. Cependant .... p>
Un objet wrapper avec un sélecteur de comparaison et une référence à l'objet de tri fonctionne. Ce n'est pas aussi propre que je le souhaiterais, j'espère que quelqu'un d'autre va venir avec une alternative. P>
Essence Cowboywrapper a une propriété de cow-boy. Cowboywrapper a également un sélecteur de comparaison. En construisant et en tenant la synchronisation d'une nsmutableArray de CowBoywrappers, trier fonctionne. P>
Si vous pouvez cibler 10,6, vous pouvez accomplir cela à l'aide de blocs. Comme:
Il convient également de noter, si vous utilisez un nsmutableArray code>, vous pouvez simplement utiliser
SHYSUTUTISCOMPARATOR: code> à la place, si vous le souhaitez.
Vous devez supprimer le couler sur NSComparator.
Vous pouvez trier comme si:
[myUnsortedArrayOfCowboys sortedArrayUsingDescriptors: [NSArray arrayWithObject: [NSSortDescriptor sortDescriptorWithKey:"person.lastName" ascending:YES]]];
Si vous souhaitez trier le numéro et la chaîne, utilisez cette
NSArray *unsortedArray = [NSArray arrayWithObjects:@"Hello", @"4", @"Hi", @"5", @"2", @"10", @"1", nil]; NSArray *sortedArray = [unsortedArray sortedArrayUsingComparator:^(id firstObject, id secondObject) { return [((NSString *)firstObject) compare:((NSString *)secondObject) options:NSNumericSearch]; }];