2012-11-02 38 views
2

我在NSDray格式的NSArray中有一個非連續日期數組。我需要在數組中使用同一組日期,但在NSString中格式化爲dd/MM。我想我需要通過從原始數組中讀取每個日期進行循環,將其轉換爲字符串並根據需要對其進行格式化,但我無法弄清楚如何逐句通過原始數組。將NSArray的NSArray轉換爲格式化日期數組作爲字符串

NSError *error2; 
NSArray *swim750mArray = [context executeFetchRequest:request2 error:&error2]; 
if (swim750mArray == nil) { 
    NSLog(@"The fetch request2 returned an array == nil"); 
} else { 
    NSLog(@"The fetch request2 returned an array..."); 
    NSLog(@"%@", swim750mArray); 

NSArray *datesAsDates = [swim750mArray valueForKey:@"date"]; 
NSMutableArray* arrayOfDatesAsStrings = [NSMutableArray arrayWithCapacity:count]; 

    //SomeCode - Convert the Array of NSDates to a new Array of dates as NSStrings... 

     for (int i=0; i<index; i++) { 
      //get the date next NSDate from the array as: NSDate *dateAsDate... 
      NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
      [dateFormat setDateFormat:@"dd/MM"]; 


     NSString *dateAsStr = [dateFormat stringFromDate:dateAsDate]; 

     [arrayOfDatesAsStrings addObject:dateAsStr]; 
     } 

這個答案是接近我需要的只是它不從和現有陣列讀什麼:How to use NSDate formatter with an array of dates?

請幫幫忙!非常感謝提前...

回答

4

怎麼樣使用fast enumeration

for (NSDate* dateAsDate in datesAsDates) { 
    //get the date next NSDate from the array as: NSDate *dateAsDate... 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"dd/MM"]; 

    NSString *dateAsStr = [dateFormat stringFromDate:dateAsDate]; 

    [arrayOfDatesAsStrings addObject:dateAsStr]; 
} 
1

jere命名爲快速枚舉。它也可以用block-based enumeration完成。你也should create a formatter once and re-use it

NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init]; 
[dateFormater setDateFormat:@"dd/MM"]; 

NSMutableArray *datesAsStrings = [NSMutableArray array]; 
[datesAsDates enumerateObjectsUsingBlock:^(NSDate *date, NSUInteger idx, BOOL *stop){ 
    NSString *dateString = [dateFormater stringFromDate:date]; 
    [datesAsStrings addObject:dateString] 
}]; 
如果你想堅持與C風格

,做

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"dd/MM"]; 
for (int i=0; i< [datesAsDates count]; i++) {  
    NSString *dateAsStr = [dateFormat stringFromDate:[dateAsDate objectAtIndex:i]]; 
    [arrayOfDatesAsStrings addObject:dateAsStr]; 
} 

但由於突變衛士,枚舉是首選。

相關問題