我正在使用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
的任何建议都已被驳回?
答案 0 :(得分:3)
我发现如果将文档发送到另一个应用程序,则会调用documentInteractionController:didEndSendingToApplication:
,但在通过电子邮件发送文档时不会调用[[NSFileManager defaultManager] linkItemAtURL:toURL:error]
(可能还有其他内置函数,如AirDrop,复制,打印等) 。这对我来说似乎是个错误,但它确实存在。
Tony在评论中的回答对我有用 - 使用{{1}}将源文件链接到临时文件并将临时文件传递给控制器。这不占用大量额外空间,临时链接将在一段时间后被删除。