Параўноўваючы NSMutableDictionaires NSMutableArray шляхам іх значэння NSDate

Я выкарыстоўваю NSArray * toWrite = [[пункты sortedArrayUsingFunction: кантэкст параўнання: нуль] капіяваць]; у мой код для сартавання NSDictionaires ў маім NSArray.

Вось мой C функцыя для параўнання:

static NSComparisonResult comparator( NSDictionary *d1, NSDictionary *d2, void *context )
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"EEE, dd/MM/yyyy"];
    NSDate *date1 = [dateFormatter dateFromString:[d1 objectForKey:@"date"]];
    NSDate *date2 = [dateFormatter dateFromString: [d2 objectForKey: @"dateString"]];
    NSLog(@"date1:%@",[dateFormatter stringFromDate:date1]);
    NSLog(@"date2:%@",[dateFormatter stringFromDate:date2]);
    [dateFormatter release];
    NSLog(@"COMPARE:%d",[date1  compare:date2]);
    return [date1  compare:date2];
}

А вось выхад пры запуску прыкладання з 3 NSDictionaries ў NSArray:

date1:Thu, 17/11/2011
date2:(null)
COMPARE:0
date1:Sat, 19/11/2011
date2:(null)
COMPARE:0

Дарэчы вось як адзін NSDictionary з майго .plist файла:


    date
    Thu, 17/11/2011
    duration
    120 min
    location
    BA708
    notes
    10 min reading time
    seat
    14
    time
    09:00
    unitName
    ROBOT SYSTEMS DESIGN

0

1 адказы

Вы карыстаецеся «дату» для аднаго ключа і «DateString» для іншых:

NSDate *date1 = [dateFormatter dateFromString:[d1 objectForKey:@"date"]];
NSDate *date2 = [dateFormatter dateFromString: [d2 objectForKey: @"dateString"]];

Згодна прыкладу Plist вы паказваеце, ключ «дата». Мяркуючы, што вы параўноўваеце яблыкі з яблыкамі, таму date2 заўсёды прыходзіць нуль.

1
дададзена
Вау .. Вы маеце рацыю, якая дурная памылка гэта. Я правёў усю ноч, гледзячы праз код.
дададзена аўтар Kex, крыніца
Я быў там таксама.
дададзена аўтар Wienke, крыніца