objective-c - 从 UIDocumentPicker 下载文件并等待下载完成

标签 objective-c xcode ios8 download uidocumentpickervc

我正在尝试从

下载一个文件
-documentPicker:didPickDocumentAtURL:

方法。 我尝试使用

获取文件的数据
NSData *data = [NSData dataWithContentsOfURL:url];

但它并没有像我预期的那样工作,因为 UIDocumentPicker 在文件下载之前触发了 -documentPicker:didPickDocumentAtURL: - 方法。

下载后如何从文件中获取 NSData?

提前致谢,法比安。

最佳答案

文件实际上是下载了,但是你需要使用文件协调器来读取文件内容。应该这样做:

- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url
{
    NSFileCoordinator *coordinator = [[NSFileCoordinator alloc] initWithFilePresenter:nil];
    NSError *error = nil;
    [coordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) {
        NSData *data = [NSData dataWithContentsOfURL:newURL];
        // Do something
    }];
    if (error) {
        // Do something else
    }
}

关于objective-c - 从 UIDocumentPicker 下载文件并等待下载完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28681196/

相关文章:

objective-c - 如何从 NSMatrix 获取 NSButton (CheckBox) 的状态

objective-c - 在 Xcode 4.3 中,我可以像以前一样要求前向方法声明吗

ios - iOS 静态和动态表格 View 单元格的混合

iphone - 如何使我的 UIView 的一部分成为可点击区域

iOS/Objective-C - 如何在不丢失初始 session 的情况下发送多个 NSURLSessionDataTask 请求?

ios - 如何以编程方式在 Swift 中的图像上添加渐变层?

ios8 - 选定文本的 iOS 8 扩展

ios - swift - 向模态视图添加约束

objective-c - cellForRowAtIndexPath 未被调用

swift - Swift 中的 UIView 背景颜色