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

Ios WriteToFile:如何在csv(或任何)文件中写入多个数据?,ios,xcode,ipad,csv,Ios,Xcode,Ipad,Csv,我正在尝试将用户名和电子邮件保存在csv文件中。将有不到50人将在该应用程序中输入姓名和电子邮件。这些详细信息应该存储在csv文件中,我必须能够在iPad中实际访问该文件。请帮忙 因此,我们需要首先了解csv文件的格式。实际上这很简单,它只是一个用逗号和换行符分隔数据的文件 所以说,我们需要存储人们的姓名、电子邮件和信息。csv文件如下所示: 无名氏,john@abc.com你好,世界 无名氏,jane@abc.com,富富 在这里,我们有两个人用换行符分隔,他们的信息用逗号分隔。我们需要一个o

我正在尝试将用户名和电子邮件保存在csv文件中。将有不到50人将在该应用程序中输入姓名和电子邮件。这些详细信息应该存储在csv文件中,我必须能够在iPad中实际访问该文件。请帮忙

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

所以说,我们需要存储人们的姓名、电子邮件和信息。csv文件如下所示:

无名氏,john@abc.com你好,世界

无名氏,jane@abc.com,富富

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

现在让我们假设我们有一个名为
peopleArray
的人数组。我们的
peopleArray
包含一组
PeopleObjects
,每个
PeopleObject
都有一个
名称
电子邮件
消息
属性

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

NSString *outputString = @"";

for (PeopleObject *person in peopleArray) {
       outputString = [outputString stringByAppendingFormat:@"%@,%@,%@\n", person.name, person.email, person.message];
}
这将创建格式正确的字符串。所以现在我们需要将所有这些写入一个文件

//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);
我们首先需要文档目录:

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
,就可以知道它在哪里

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

所以说,我们需要存储人们的姓名、电子邮件和信息。csv文件如下所示:

无名氏,john@abc.com你好,世界

无名氏,jane@abc.com,富富

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

现在让我们假设我们有一个名为
peopleArray
的人数组。我们的
peopleArray
包含一组
PeopleObjects
,每个
PeopleObject
都有一个
名称
电子邮件
消息
属性

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

NSString *outputString = @"";

for (PeopleObject *person in peopleArray) {
       outputString = [outputString stringByAppendingFormat:@"%@,%@,%@\n", person.name, person.email, person.message];
}
这将创建格式正确的字符串。所以现在我们需要将所有这些写入一个文件

//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);
我们首先需要文档目录:

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
,就可以知道它在哪里

首先,首先,你好,科里先生,非常感谢你的回复。。现在我可以保存csv文件了。。。因此,我使用两个文本字段从用户处获取详细信息。。。。所以我不使用for循环。。。相反,我直接将值发送到输出字符串。。。但不是附加,而是覆盖并替换为新数据。我使用outputString=[outputString stringByAppendingFormat:@“%@,%@\n”,name.text,address.text];和BOOL writed=[outputString writeToFile:outputfilename自动:是编码:NSUTF8StringEncoding错误:&csverror];由于没有使用for循环,请确保在头文件中声明outputString。在viewDidLoad中初始化它,然后您将能够附加到它。好的。。。。我让它工作了。。。非常感谢你的帮助。。。最后一个问题。。。因此,在我的mac book pro中,people.csv文件存储在应用程序的文档目录中。比如说,如果我在iPad上部署此应用程序,我应该去哪里获取此文件?我希望能够进入iPad中的文件夹,删除csv文件,或者将该文件复制到drop box或mac book。。。你能帮我吗?你的文件的完整路径是outputFileName。在iPad上删除它的唯一方法是在应用程序中实现该功能。如果您知道文件路径,那么这样做很简单。要上传到dropBox,您需要在应用程序中实现它们的api。要了解你的mac笔记本,请看以下示例:嗨,科里先生,0down votefavorite我已经为iPad实现了一个应用程序,作为单视图应用程序(肖像)。在iPad中部署后,当我将iPad切换到横向时,应用程序也会切换,但文本字段不可见。如何实现此问题的滚动?这是给iOS5Hi Cory先生的,非常感谢你的回复。。现在我可以保存csv文件了。。。因此,我使用两个文本字段从用户处获取详细信息。。。。所以我不使用for循环。。。相反,我直接将值发送到输出字符串。。。但不是附加,而是覆盖并替换为新数据。我使用outputString=[outputString stringByAppendingFormat:@“%@,%@\n”,name.text,address.text];和BOOL writed=[outputString writeToFile:outputfilename自动:是编码:NSUTF8StringEncoding错误:&csverror];由于没有使用for循环,请确保在头文件中声明outputString。在viewDidLoad中初始化它,然后您将能够附加到它。好的。。。。我让它工作了。。。非常感谢你的帮助。。。最后一个问题。。。因此,在我的mac book pro中,people.csv文件存储在应用程序的文档目录中。比如说,如果我在iPad上部署此应用程序,我应该去哪里获取此文件?我希望能够进入iPad中的文件夹,删除csv文件,或者将该文件复制到drop box或mac book。。。你能帮我吗?你的文件的完整路径是outp