从NSMutableArray创建一个csv

时间:2014-02-21 16:31:13

标签: ios objective-c csv plist

在我的应用程序中,我正在创建.plist文件,但我需要在Excel表格中使用存储在此.plist中的数据。我需要一种方法来获得这个plist的csv形式。我试图在网上搜索,但我发现只有转换器允许从csv创建一个plist。我想有一种方法可以直接从我的iPad应用程序生成一个csv文件。有谁知道这样做的方法吗?

更新:

+ (void)saveFileFromArray:(NSMutableArray *)promoArray {
    NSMutableString *target = [@"Nome,Cognome,E-mail,Data di nascita,Indirizzo,Città,Cap,Telefono\n" mutableCopy];

    for (NSDictionary *dict in promoArray) {
        [target appendFormat:@"%@,%@,%@,%@,%@,%@,%@,%@\n",dict[@"name"],dict[@"surname"],dict[@"email"],dict[@"birthdate"],dict[@"address"],dict[@"city"],dict[@"zip"],dict[@"phone"]];
    }
    NSError *error = nil;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"profiles.csv"];

    NSURL *url = [NSURL URLWithString:fileName];

    BOOL success = [target writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&error];

    if (!success) {
        NSLog(@"Errore: %@", error.localizedDescription);
    }
}

2 个答案:

答案 0 :(得分:1)

遍历数组,并将您想要的部分写入字符串。

带有逗号的字符串将有很大帮助。车厢返回也很好。

完成字符串后。将其写入文件。

NSMutableString *target = [@"head1,head2,head3\n" mutableCopy];

for (NSDictionary *dict in array) {

    [target appendFormat:@"%@,%@,%@\n",dict[@"thing"],dict[@"otherthing"],dict[@"lemming"]];

}

NSError *error = NULL;

BOOL success = [target writeToURL:somewhere atomically:YES encoding:NSUTF8StringEncoding error:&error];

if (!success) {
    NSLog(@"oh no! - %@",error.localizedDescription);
}

该片段假设您有一个NSDictionary数组,但万一其他原则是相同的。

对于每个对象,打印出逗号分隔的字符串,并以CR终止。

您需要在现实世界数据中防范的事情是

  • 已使用逗号进行描述。
  • 已经使用CR的说明。

答案 1 :(得分:0)

只需使用已经开发和测试的框架。我使用https://github.com/davedelong/CHCSVParser,效果很好。

偶尔,我必须添加一两个功能,但鉴于它是开源的,这不是什么大问题。