Le chemin à parcourir est d'utiliser la méthode NSArray -sortedArrayUsingFunction:context:
. Cela fonctionne dans iOS 2.0 et versions ultérieures et est assez simple. Vous appelez:
sortedArray = [unsortedArray sortedArrayUsingFunction:sortByStringDate context:NULL];
Et vous aurez besoin de définir la fonction comme ceci:
NSInteger sortByDateString(id string1, id string2, void *context)
{
int y1 = [[string1 yearComponent] intValue];
int y2 = [[string2 yearComponent] intValue];
if (y1 < y2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
int m1 = [[string1 monthComponent] intValue];
int m2 = [[string2 monthComponent] intValue];
if (m1 < m2)
return NSOrderedAscending;
// et cetera
}
Vous aurez besoin de votre propre logique pour séparer l'année, le mois et la date de la chaîne afin que vous puissiez comparer chacun d'eux. Je ne suis pas sûr que ce soit moins de travail que de convertir les cordes en dates comme Dennis l'a suggéré, mais vous connaissez votre programme, donc celui qui fonctionne.
quel est le format de chaîne - donner un exemple! – deanWombourne
Ces données sont-elles stockées dans des objets ordinaires dans un tableau ou s'agit-il d'objets gérés dans un graphe de données de base? – TechZen
il est des entités de données de base et seul moyen d'accéder à la chaîne de date en utilisant. opérateur avec l'objet de l'entité de données de base. – Ishu