WriteToFile:如何在csv(或任何)文件中写入多个数据?

时间:2012-08-17 15:11:50

标签: ios xcode ipad csv

我正在尝试在csv文件中保存用户名和电子邮件。将有不到50人将输入他们的名字和电子邮件到这个应用程序。这些细节应存储在csv文件中,我必须能够物理访问iPad中的文件。请帮忙!!

1 个答案:

答案 0 :(得分:4)

因此我们需要先了解csv文件的格式。实际上它非常简单,它只是一个文件,其中数据以逗号和换行符分隔。

所以说我们需要存储人们的姓名,电子邮件和消息。 csv文件是这样的:

John Doe,john @ abc.com,Hello World!

Jane Doe,jane @ abc.com,Foo Foo

这里我们有两个人用换行符分隔,他们的信息用逗号分隔。我们需要一个outputString来控制所有这些混乱。

现在让我们假设我们有一群叫peopleArray的人。我们的peopleArray拥有一堆PeopleObjects,每个PeopleObject都有nameemailmessage属性。

我们有很多人和他们各自的信息。现在让我们创建outputString

NSString *outputString = @"";

for (PeopleObject *person in peopleArray) {
       outputString = [outputString stringByAppendingFormat:@"%@,%@,%@\n", person.name, person.email, person.message];
}

这将创建格式正确的字符串。所以现在我们需要将所有这些写入文件。

我们首先需要文件目录:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirectory = [paths objectAtIndex:0];

现在docDirectory将告诉我们在哪里写文件。接下来,我们需要在目录中附加一个文件名。

NSString *outputFileName = [docDirectory stringByAppendingPathComponent:@"People.csv"];

所以现在我们有了格式化的csv字符串和一个保存它的位置。最后一部分是将其写入文件。

//Create an error incase something goes wrong
NSError *csvError = NULL;

//We write the string to a file and assign it's return to a boolean
BOOL written = [outputString writeToFile:outputFileName atomically:YES encoding:NSUTF8StringEncoding error:&csvError];

//If there was a problem saving we show the error if not show success and file path
if (!written) 
    NSLog(@"write failed, error=%@", csvError);
else
    NSLog(@"Saved! File path =", outputFileName);

现在,如果您需要再次访问该文件,请保存outputFileName,以便了解它的位置。