我正在尝试在csv文件中保存用户名和电子邮件。将有不到50人将输入他们的名字和电子邮件到这个应用程序。这些细节应存储在csv文件中,我必须能够物理访问iPad中的文件。请帮忙!!
答案 0 :(得分:4)
因此我们需要先了解csv文件的格式。实际上它非常简单,它只是一个文件,其中数据以逗号和换行符分隔。
所以说我们需要存储人们的姓名,电子邮件和消息。 csv文件是这样的:
John Doe,john @ abc.com,Hello World!
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
,以便了解它的位置。