2012-09-30 137 views
3

我有三個數組。第一個數組包含字符串,與第二個數組相同,但第三個數組包含NSNumber's。無論如何,回到主題......我如何創建一個csv(這是一個excel /數字)文件像電子表格來包含這些數據。可能嗎?Xcode - 創建csv /電子表格文件

這是我的三個陣列:

locationArray - 包含許多字符串 dateArray - 包含許多字符串 milesArray - 包含許多NSNumber

但是每個陣列包含對象的相同的量,從而(例如在表格視圖中),您可以將數據拼成一個NSDictionary。它就像一個鏈條。

現在,它看起來像這樣:

NSDictionary *firstFlight = [NSDictionary dictionaryWithObjectsAndKeys:[locationArray objectAtIndex: 0], @"FlightName", [dateArray objectAtIndex: 0], @"FlightDate", [milesArray objectAtIndex: 0], @"FlightMiles", nil]; 

而且該字典將包含一個飛行(本測試應用程序的功能是記錄飛行)。因此,如果我使用for循環列舉了這個循環,並用循環數字替換了objectAtIndex:,我可以獲得航班的許多字典。

現在你明白我的數據結構是如何工作的。我怎樣才能創建一個Excel /數字/電子表格CSV文件,看起來像這樣的例子(只是一個抓屏從它可能是什麼樣子):

(MILES數據只是由)

enter image description here

+1

[你有什麼嘗試?](http://whathaveyoutried.com)在創建輸出字符串? – Abizern

+0

我還沒有嘗試過任何東西,因爲我很不確定如何做到這一點 – MCKapur

+0

實際上,我打算創建一個單獨的不可見的表格視圖並對其進行截圖,但是我更喜歡創建CSV文件的這種想法 – MCKapur

回答

12

NSArray *firstArray, *secondArray, *thirdArray; 

NSMutableString *csv = [NSMutableString stringWithString:@"Name,Date,Miles"]; 

NSUInteger count = [firstArray count]; 
// provided all arrays are of the same length 
for (NSUInteger i=0; i<count; i++) { 
    [csv appendFormat:@"\n\"%@\",%@,\"%d\"", 
     [firstArray objectAtIndex:i], 
     [secondArray objectAtIndex:i], 
     [[thirdArray objectAtIndex:i] integerValue] 
    ]; 
    // instead of integerValue may be used intValue or other, it depends how array was created 
} 

NSString *yourFileName = @"your filename"; 
NSError *error; 
BOOL res = [csv writeToFile:yourFileName atomically:YES encoding:NSUTF8StringEncoding error:&error]; 

if (!res) { 
    NSLog(@"Error %@ while writing to file %@", [error localizedDescription], yourFileName); 
} 
 
+0

絕對精美。 ..不能要求更好的東西 – MCKapur