UIDocumentInteractionController :( null)图像

时间:2015-09-28 10:29:42

标签: ios nsurl uidocumentinteraction

我正在从API下载图像并将其保存到设备上的目录中。然后我试图在它上面使用UIDocumentInteractionController,传递我刚保存的图像的本地路径。

NSURL *url = [NSURL fileURLWithPath: filePath];
UIDocumentInteractionController *interactionController = [UIDocumentInteractionController interactionControllerWithURL: url];
interactionController.delegate = self;
CGRect rect = CGRectMake(0, 0, 300, 300);
[interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];

当我通过记录比较两个NSString时,这就是我得到的:

  • [url absoluteString]

    file:///var/mobile/Containers/Data/Application/1121F345-0BCA-4624-8A72-F4CE0D39EAE5/Documents/complaint/1443432747ea3dc39ca0b2f6b5f17abddec1f0e9a439955.png

  • filePath

    /var/mobile/Containers/Data/Application/1121F345-0BCA-4624-8A72-F4CE0D39EAE5/Documents/complaint/1443432747ea3dc39ca0b2f6b5f17abddec1f0e9a439955.png

正如您所知,除了file://在开头或url字符串之外,路径是不确定的。图像没有损坏,但是在从UIDocumentInteractionController中拾取的每个动作中(保存图像,将其分配给联系人等),都有一个(null)对象而不是Image。 我做错了什么?

修改

如果我使用

[interactionController presentPreviewAnimated:YES];

而不是

[interactionController presentOptionsMenuFromRect:rect inView:self.view animated:YES];

并提供委托方法documentInteractionControllerViewControllerForPreview:图像显示和所有操作。 为什么它与预览一起使用时有效,但不是没有它?

1 个答案:

答案 0 :(得分:2)

我在this question找到了答案。

基本上,在处理选定的操作之前,UIDocumentInteractionController已被解除分配(ARC)。确保它被保留,我通过为它创建strong属性来做到这一点(以下示例默认为strong)。

@property (nonatomic) UIDocumentInteractionController *interactionController;