0

我正在尝试将用户名和电子邮件保存在 csv 文件中。将少于 50 人输入他们的姓名和电子邮件到此应用程序。这些详细信息应存储在 csv 文件中,并且我必须能够在 iPad 中物理访问该文件。请帮忙!!

4

1 回答 1

4

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

假设我们需要存储人们的姓名、电子邮件和消息。一个 csv 文件会是这样的:

约翰·多伊,john@abc.com,世界你好!

Jane Doe, jane@abc.com, Foo Foo

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

所以现在假设我们有一组名为peopleArray. 我们peopleArray拥有一堆,PeopleObjects每个PeopleObject都有一个name, email, 和message属性。

我们有一大群人及其各自的信息。现在让我们创建我们的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这样您就会知道它在哪里。

于 2012-08-17T17:01:33.230 回答