'通用' I-phone的文件路径?

时间:2014-11-14 19:06:56

标签: ios csv email-attachments

所以有一段时间我已经建立了一项调查,让人们在他们的i-phone上完成所有数据保存到csv文件,然后在完成后通过应用程序通过电子邮件发送...但是我无法附加csv文件!让我解释一下。

我的代码如下:

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setToRecipients:@[@"gpsflighttrial@gcap.eu"]];
[mailer setSubject:self.subject.text];
[mailer setMessageBody:self.message.text isHTML:NO];
[mailer addAttachmentData:[NSData dataWithContentsOfFile:@"results.csv"]
                 mimeType:@"application/csv"
                 fileName:@"results.csv"];
[self presentModalViewController:mailer animated:YES];

这将在应用程序中附加csv文件并发送它然后在收到它时csv文件将消失(好像通过魔法!)检查文件是否正确等并保存数据它添加实际日志所以它看起来像这样:

MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setToRecipients:@[@"gpsflighttrial@gcap.eu"]];
[mailer setSubject:self.subject.text];
[mailer setMessageBody:self.message.text isHTML:NO];
[mailer addAttachmentData:[NSData dataWithContentsOfFile:@"/var/mobile/Applications/CD2A1913-DEE0-41DD-9F8A-00DD6793F565/Documents/results.csv"]
                 mimeType:@"application/csv"
                 fileName:@"results.csv"];
[self presentModalViewController:mailer animated:YES];

SUCCESS!我认为电子邮件是在应用程序内发送的,附件在收到后就在那里!然而,当在另一部手机上尝试它时,回到相同的东西附件就在那里,但在收到它时没有任何可见的东西。我再次查看日志只是为了找到这次另一部手机正在保存它/var/mobile/Applications/B866A8EC-3A50-4642-B09B-F7DB15C66433/Documents/results.csv因此为什么它没有找到附件!

我的问题是如何解决这个问题?是否有i-phone的通用路径名?当如何将应用程序保存在不同的文件夹中时,如何让应用程序在每个手机上找到该文件?

感谢您的时间:)

1 个答案:

答案 0 :(得分:0)

您可以存储和访问用户文件的目录:

https://developer.apple.com/library/mac/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

您可以使用我在评论中链接的文章中的方法获取Documents目录的路径:

- (NSString *) applicationDocumentsDirectory {    
  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
  return basePath;
}


NSString *path = [self applicationDocumentDirectory];
NSString *filePath = [documentsPath stringByAppendingPathComponent:@"results.csv"];
NSData *data = [NSData dataWithContentsOfFile:filePath];

这是我保存csv文件并稍后检索它以便发送的位置。

代码本身尚未运行,因此我不保证语法正确。这就是我如何解决这个问题。

如果您不需要持久性,则可以使用NSData存储数据存储器。