3

我有三个数组。第一个数组包含字符串,与第二个相同,但是第三个包含NSNumber's。无论如何,回到主题......我如何创建一个像电子表格一样的 csv(这是一个 excel/数字)文件来包含这些数据。是否可以?

这是我的三个数组:

locationArray - 包含许多字符串 dateArray - 包含许多字符串 milesArray - 包含许多NSNumber's

但是每个数组都包含相同数量的对象,因此(例如在表格视图中)您可以将数据拼凑到一个NSDictionary. 它就像一条链子。

那么它看起来像这样:

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

该字典将包含一个航班(此测试应用程序的功能是记录航班)。因此,如果我使用for循环枚举它并替换objectAtIndex:为循环数字,我可以获得许多航班词典。

现在您了解了我的数据结构是如何工作的。例如,我如何创建一个 excel/数字/电子表格 CSV 文件看起来像这样(只是它可能看起来的屏幕截图):

(里程数据只是编造的)

在此处输入图像描述

4

1 回答 1

13

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 );
}

于 2012-09-30T08:37:24.913 回答