2011-10-28 53 views
0

我在我的代碼中使用NSArray *toWrite = [[items sortedArrayUsingFunction:comparator context:nil] copy];來排序NSArray中的NSDictionaires。比較NSMutableArray的NSMutableDictionaires的NSDate值

這裏是比較我的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

您使用的OTH的一鍵通「日期」和「dateString」呃:

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

根據你展示的plist例子,關鍵是「日期」。假設你將蘋果與蘋果進行比較,那就是爲什麼date2總是爲空。

+0

哇...你是對的,這是一個愚蠢的錯誤。我花了整個晚上看代碼。 – Kex

+0

我也去過那裏。 – Wienke