Question

Considérez ce tableau. Il n'a pas de clé, donc je ne suis pas sûr de pouvoir utiliser NSSortDescriptor. Quelle serait la meilleure méthode pour les trier?

(
    "Thursday, July 30, 2009",
    "Monday, September 07, 2009",
    "Wednesday, September 09, 2009",
    "Friday, August 14, 2009",
    "Saturday, September 05, 2009",
    "Monday, August 10, 2009",
    "Thursday, July 23, 2009",
    "Monday, October 12, 2009",
    "Friday, October 16, 2009",
    "Monday, August 17, 2009",
    "Tuesday, October 13, 2009",
    "Wednesday, September 30, 2009",
    "Sunday, August 16, 2009",
    "Thursday, August 27, 2009",
    "Monday, August 31, 2009",
    "Saturday, August 15, 2009",
    "Thursday, August 06, 2009",
    "Saturday, September 26, 2009",
    "Tuesday, September 29, 2009",
    "Tuesday, September 15, 2009",
    "Tuesday, September 01, 2009"
)
Était-ce utile?

La solution

Vous pouvez utiliser triéArrayUsingFunction:

Voici un exemple de code.

NSInteger dateSort(id s1, id s2, void *context)
{
    NSDateFormatter* format = (NSDateFormatter*)context;
    NSDate* d1 = [format dateFromString:s1];
    NSDate* d2 = [format dateFromString:s2];

    return [d1 compare:d2];
}

...

-(void)someObjectiveCMethod
{
    NSDateFormatter* format = [[[NSDateFormatter alloc] init] autorelease];

    // Find theses format codes here:
    // http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
    //
    [format setDateFormat:@"EEEE, MMMM dd, yyyy"];

    NSArray* myArray = getMyArray();
    NSArray* sortedArray = [myArray sortedArrayUsingFunction:dateSort context:format];
}

Il existe un nombre de ces méthodes de tri dans NSArray. Cela vaut la peine de regarder ceux qui se familiarisent avec eux.

Autres conseils

NSArray * unsortedDates = ...;
NSArray * sortedDates = [unsortedDates sortedArrayUsingSelector:@selector(compare:)];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top