Сравнение NSMutableDictionaires NSMutableArray их значениями NSDate - PullRequest
0 голосов
/ 28 октября 2011

Я использую NSArray *toWrite = [[items sortedArrayUsingFunction:comparator context:nil] copy]; в своем коде для сортировки 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:

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

1 Ответ

1 голос
/ 28 октября 2011

Вы используете «date» для одного ключа и «dateString» для другого:

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

В соответствии с приведенным вами примером для списка параметров ключ является «date»Предполагая, что вы сравниваете яблоки с яблоками, вот почему date2 всегда имеет значение null.

...