使用UIDocumentInteractionController处理临时文件

时间:2012-09-17 07:16:05

标签: iphone objective-c ios ios6

我正在使用UIDocumentInteractionController一个临时文件,该文件在下载后存放在我的缓存中。我正在使用一个非常简单的类,它将md5-cache个文件名(ext = cache)传送到我的应用程序,下载的文件采用这种格式。原因是在本地拥有文件并且只下载一次(会话)。由于缓存名称采用统一格式,因此我可以轻松清理它们。

现在使用UIDocumentInteractionController我需要将这些文件重命名为原始名称,否则无法正确识别它们。

UIDocumentInteractionController完成切换文件时,我想将文件移回其缓存文件名。问题是,方法: - documentInteractionController:didEndSendingToApplication:永远不会被调用 - 尽管代理设置正确。

我基本上如何设置控制器:

interactionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:temporaryFile]];
interactionController.delegate = self;
interactionController.annotation = [cacheURLString lastPathComponent]; // original name to move back to

有关如何正确查明某个文件已移交给其他应用程序/或UIDocumentInteractionController的任何建议都已被驳回?

1 个答案:

答案 0 :(得分:3)

我发现如果将文档发送到另一个应用程序,则会调用documentInteractionController:didEndSendingToApplication:,但在通过电子邮件发送文档时不会调用[[NSFileManager defaultManager] linkItemAtURL:toURL:error](可能还有其他内置函数,如AirDrop,复制,打印等) 。这对我来说似乎是个错误,但它确实存在。

Tony在评论中的回答对我有用 - 使用{{1}}将源文件链接到临时文件并将临时文件传递给控制器​​。这不占用大量额外空间,临时链接将在一段时间后被删除。