【问题标题】:Saving CSV file to documents directory folder将 CSV 文件保存到文档目录文件夹
【发布时间】:2015-10-05 04:48:35
【问题描述】:

我正在编写一个注册应用程序,它应该在文档目录文件夹中保存一个 CSV 文件。我想看看输出,看看当我在 excel 中打开 CSV 文件时会发生什么。我通过使用以下代码 sn-p 找出应该保存它的位置导航到文档目录文件夹:

NSLog(@"Info Saved");
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager]
                                    URLsForDirectory:NSDocumentDirectory
                                    inDomains:NSUserDomainMask] lastObject]);

这是我保存输入到注册表单中 11 个文本字段中的信息的代码:

- (IBAction)saveFormButton:(id)sender {

// saves text field data in comma separated CSV file format
NSString *formData = [NSString stringWithFormat:@"%@,%@,%@,%@,%@,%@,%@,%@,%@,%@,%@\n",
                      self.nameTextfield.text, self.emailTextfield.text,
                      self.phoneTextfield.text, self.termTextfield.text,
                      self.schoolTextfield.text, self.graduationTextfield.text,
                      self.gpaTextfield.text, self.degreeTextfield.text,
                      self.interestTextfield.text, self.groupTextfield.text,
                      self.appliedTextfield.text];

// get document directory path
NSString *documentDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                    NSUserDomainMask, YES)objectAtIndex:0];

// append results.csv onto doc path
NSString *event = [documentDirectoryPath stringByAppendingString:@"results.csv"];

// creates folder if it does not exist
if (![[NSFileManager defaultManager] fileExistsAtPath:documentDirectoryPath]) {
    [[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil];
}


NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:event];
[fileHandle seekToEndOfFile];
[fileHandle writeData:[formData dataUsingEncoding:NSUTF8StringEncoding]];
[fileHandle closeFile];

我应该在我导航到的那个特定文件夹中看到一个文件吗?

感谢您的帮助,

【问题讨论】:

  • 我忘了说,我对iOS开发很陌生

标签: ios objective-c csv nsdocumentdirectory


【解决方案1】:

改变这一行:

NSString *event = [documentDirectoryPath stringByAppendingString:@"results.csv"];

到:

NSString *event = [documentDirectoryPath stringByAppendingPathComponent:@"results.csv"];

这可确保路径格式正确。此外,您似乎在创建文件而不是文件名本身之前检查“documentDirectoryPath”是否存在。变化:

if (![[NSFileManager defaultManager] fileExistsAtPath:documentDirectoryPath]) {
    [[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil];
}

到:

if (![[NSFileManager defaultManager] fileExistsAtPath:event]) {
    [[NSFileManager defaultManager] createFileAtPath:event contents:nil attributes:nil];
}

【讨论】:

    【解决方案2】:

    这是一种更优雅的方式,代码更少

     // Content of file
     NSString* str= @"str,hey,so,good";
    
     // Writing    
     NSString *root = [NSHomeDirectory() stringByAppendingPathComponent:@"file.csv"];
     [str writeToFile:root atomically:YES encoding:NSUTF8StringEncoding error:NULL];
    
     // Reading
     NSString *string = [[NSString alloc] initWithContentsOfFile:root encoding:NSUTF8StringEncoding error:nil];
    
     NSLog(@"%@",string);
    

    结果:

    2015-07-15 15:52:56.267 ObjC[2927:15828] str,hey,so,good
    

    【讨论】:

      猜你喜欢
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      相关资源
      最近更新 更多