ios - 使用 UIActivityViewController 创建和使用 .csv 文件

标签 ios uiactivityviewcontroller

所以我正在创建一个 .csv 文件,然后允许用户使用 UIActivityViewController 共享它。

我创建 csv 文件的代码将返回文件的 NSURL:

- (NSURL *)exportToCSV
{
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"results.csv"];

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

    NSMutableString *contents = [NSMutableString stringWithCapacity:0];

    //fill contents with data in csv format
    // ...

    NSFileHandle *fileHandle = [NSFileHandle fileHandleForUpdatingAtPath:filePath];
    [fileHandle writeData:[contents dataUsingEncoding:NSUTF8StringEncoding]];
    [fileHandle closeFile];

    return [NSURL fileURLWithPath:filePath];
}

然后我的事件使用该 NSURL 来启动 UIActivityViewController:

- (IBAction)shareButtonPressed:(id)sender {

    NSArray *activityItems = @[@"results.csv", [self.object exportToCSV]];
    UIActivityViewController *shareScreen = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];

    [self presentViewController:shareScreen animated:YES completion:nil];
}

当我选择邮件选项时,未附加 csv 文件。它只有文本“results.csv”

我做错了什么?

最佳答案

问题似乎出在您的 fileExistsAtPath 行中。您似乎在说“如果文档目录不存在,则创建文件”。这当然是不对的。

就我个人而言,我会丢失那些东西并将其更改为

- (NSURL *)exportToCSV
{
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"results.csv"];

    NSMutableString *contents = [NSMutableString stringWithCapacity:0];

    //fill contents with data in csv format
    // ...

    NSError *error;

    [contents writeToFile:filePath
               atomically:YES
                 encoding:NSUTF8StringEncoding
                    error:&error];

    // check for the error

    return [NSURL fileURLWithPath:filePath];
}

关于ios - 使用 UIActivityViewController 创建和使用 .csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13906140/

相关文章:

ios - NSURLSessionDataTask : Application crashes in NSOperationQueue

ios - 使用 Cocoapods 的 SinchService 集成失败

ios - 解析 Hello World 警告 - 正在主线程上执行长时间运行的操作

ios - 应用程序在 iOS 8 中运行良好,但在 iOS 7 中运行不正常

ios - UIActivityViewController不与微信共享

objective-c - 在子类中更改 ivar 的类(到派生类)

ios - 将应用程序提交到 AppStore 时 bundle 无效

ios - 在 UIActivityItemProvider 中返回文本、url 和图像

ios - 带有 UIActivityViewController 的 HTML 电子邮件正文

ios - UIActivityViewController 在导航栏上显示电子邮件模态视图 Controller