2011-07-28 60 views
1

繼一個NSArray對象(的NSDictionary)是我的數據庫結構:合併的具有共同數據

(
    { 
     NSDate 
     Name 
    }, 
    { 
     NSDate 
     Name 
    } 

); 

要轉換的上述的NSArray成下列結構:

(
     { 
      Date 
      Time 
       (

       ) 
      Name 
       (

       )    
     }, 
     { 
      Date 
      Time 
       (

       ) 
      Name 
       (

       ) 
     } 

    ); 

實施例:

最初分選陣列

Date    Name 

1-7-2011 10.00 A1 
2-7-2011 2.00 A2 
2-7-2011 2.00 A3 
2-7-2011 3.00 A4 

輸出:

Date  Time  Name 
1-7-2011 10.00  A1 

         A2 
      2.00  A3 
2-7-2011     
      3.00  A4 

在那種想合併事件具有相同共同因素 & 添加常見的因素只有一次。所以,是否可以實現上述的事情使用預定義的iOS框架功能?提前Thanx。

回答

1

這應該這樣做

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 
NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init]; 

for (NSDictionary *item in yourArray) { 
    NSDate *date = [item objectForKey:@"date"]; 

    [dateFormater setDateFormat:@"yyyy-MM-dd"]; 
    NSString *dateString = [dateFormater stringFromDate:date]; 

    [dateFormater setDateFormat:@"hh:mm"]; 
    NSString *timeString = [dateFormater stringFromDate:date]; 

    if ([dictionary objectForKey:dateString]) { 
     if ([dictionary objectForKey:timeString]) { 
      [[[dictionary objectForKey:dateString] objectForKey:timeString] setObject:[item objectForKey:@"name"] forKey:@"name"]; 
     } 
     else { 
      NSMutableDictionary *timeDictionary = [NSMutableDictionary dictionaryWithObject:[item objectForKey:@"nam"] forKey:@"name"]; 
      [[dictionary objectForKey:dateString] setObject:timeDictionary forKey:timeString]; 
     } 
    } 
    else { 
     NSMutableDictionary *timeDicationary = [NSMutableDictionary dictionaryWithObject:[item objectForKey:@"name"] forKey:@"name"]; 
     NSMutableDictionary *dateDictionary = [NSMutableDictionary dictionaryWithObject:timeDictionary forKey:timeString]; 
     [dictionary setObject:dateDictionary forKey:dateString]; 
    } 
} 

[dateFormater release]; 
相關問題