从 NSMutableArray 创建一个 csv

Posted

技术标签:

【中文标题】从 NSMutableArray 创建一个 csv【英文标题】:Create a csv from a NSMutableArray 【发布时间】:2014-02-21 16:31:12 【问题描述】:

在我的应用程序中,我正在创建一个 .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);
    

【问题讨论】:

在应用程序中将 plist 转换为 CSV,然后导出文件以便您可以在 Excel 中访问...***.com/questions/10119035/… 【参考方案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);

sn-p 假设您有一个 NSDictionary 数组,但如果是其他东西,原理是相同的。

为每个对象打印一个逗号分隔的字符串并以 CR 结束。

在现实世界的数据中你必须防范的事情是

已包含逗号的说明。 已包含 CR 的说明。

【讨论】:

谢谢!我刚刚更改了一条指令:BOOL success = [target writeToURL:somewhere atomically:YES encoding:NSUTF8StringEncoding error:&error];BOOL success = [target writeToFile:fileName atomically:YES encoding:NSUTF8StringEncoding error:&error];,现在效果很好!【参考方案2】:

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

有时,我必须添加一两个功能,但鉴于它是开源的,这没什么大不了的。

【讨论】:

以上是关于从 NSMutableArray 创建一个 csv的主要内容,如果未能解决你的问题,请参考以下文章

从 NSMutableArray xcode 中删除对象

从 UITableView NSMutableArray 和 ManagedObjectContext 中删除行

NSMutableArray 删除一个条目后丢失所有条目

创建一个包含多个 NSMutableDictionary 对象的 NSMutableArray

NSMutableArray 从 plist 返回 Null

从 NSMutableArray 中删除一个值