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