2011-08-28 141 views
1

關於NSArrays和NDictionarys的快速提問。NSArray內的NSDictionary

我有和NSArray包含NSDictionarys。 NSDictionary包含一個日期和一個字符串。

我想要做的就是結束一個NSDictionary,其中包含日期和字符串的鍵數組。

什麼是做到這一點

回答

2
NSMutableDictionary *result = [NSMutableDictionary dictionary]; 
for (NSDictionary *dict in array) { 
    NSDate *date = [dict objectForKey:@"dateKey"]; 
    NSString *string = [dict objectForKey:@"stringKey"]; 
    NSMutableArray *stringsWithDate = [result objectForKey:date]; 
    if (!stringsWithDate) { 
     stringsWithDate = [NSMutableArray array]; 
     [result setObject:stringsWithDate forKey:date]; 
    } 
    [stringsWithDate addObject:string]; 
} 

注意NSDate不是「日曆日期」,所以用不同的時間在同一天將被視爲在結果字典中的不同日期。

+0

我已經確定所有的NSDate在00:00使用這個NSCalendar * cal = [NSCalendar currentCalendar]; [cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; NSDateComponents * comp = [cal組件:(NSMonthCalendarUnit | NSYearCalendarUnit | NSDayCalendarUnit)fromDate:tempDate]; NSDate * dateToAdd = [cal dateFromComponents:comp]; – user913059

+0

should [result setObject:stringsWithDate forKey:date]; 在if語句之後,在完成之後完成,THANKKKS! – user913059

+0

實際上,它應該在if語句內使用'[set setObject:...]'。 – omz

2

由於我沒有看到這樣做的合理動機的最好方式,我們稱之爲代碼高爾夫球。

NSMutableArray *dates = [NSMutableArray array]; 
NSMutableArray *strings = [NSMutableArray array]; 

for (NSDictionary *dict in dictArray) { 
    [dates addObject:[dict objectForKey:@"date"]]; 
    [strings addObject:[dict objectForKey:@"string"]]; 
} 

NSArray *datesArray = [[NSArray alloc] initWithArray:dates]; 
NSArray *stringsArray = [[NSArray alloc] initWithArray:strings];