【问题标题】:Saving data to device using Parse array使用 Parse 数组将数据保存到设备
【发布时间】:2014-03-24 00:12:34
【问题描述】:

我的应用程序从名为 PDFTableView 的 Parse 类中提取数据,并将文件名和作者名称存储到我的 tableview 中。我对其进行了编程,因此当用户选择单元格时,他们将被带到 downloadDetailView,他们可以通过按一下按钮下载文件。其他一切正常,但我不知道如何编程按钮以将存储在我的阵列中的文件保存到计算机上。这是我的代码

这是我从 tableview 发送“PDFFile”到下载页面的 segue

 detailVC.downloadfile=[[PDFArray objectAtIndex:indexPath.row]objectForKey:@"PDFFile"];

这会将文件拉入详细视图。详细声明的属性 view.h

@property (retain,nonatomic) PFFile * downloadfile;

在实施过程中,我创建了按钮,并希望将 PDF 文件保存在计算机上。

【问题讨论】:

    标签: ios objective-c uitableview pdf download


    【解决方案1】:

    有很多不同的方法可以做到这一点。最简单的可能是在您的按钮 TargetAction 中执行此操作:

    NSData *data = [self.downloadfile getData];
    [data writeToFile:@"/path/to/save.pdf" atomically:NO];
    

    虽然使用这个方法会同步发生,所以如果你不异步调度它,它会阻塞主线程,或者使用 PFFile 的异步方法。

    【讨论】:

    • 嗯,我没有收到任何错误,但文件没有下载。我确实收到警告:正在主线程上执行长时间运行的 Parse 操作。中断 warnParseOperationOnMainThread() 进行调试。可能就像你说的,因为它是同步完成的。我的下载文件日志确实已启动,但文件未显示在桌面上。
    • 我不想经历整个异步方法对于 PDF 文件来说似乎冗长。
    • 如果您不希望它同步运行,您将不得不做一些事情,并且您确实应该在后台线程上进行任何下载。检查返回的 NSData 对象中是否包含任何数据,然后检查以确保您的路径设置正确。
    • 所以我现在使用这种方法,它消除了警告,但文件仍然没有显示在桌面上:-(void) Savefile { [self.downloadfile getDataInBackgroundWithBlock:^(NSData *data, NSError *error) { if (error) { } else if (data) { [data writeToFile:@"/Users/Danny/Desktop" atomically:NO]; NSLog(@"正在下载..."); } }]; }
    • 你必须添加一个文件名。尝试类似 /Users/Danny/Desktop/ParseDownload.pdf
    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多