4

我正在使用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已被驳回的任何建议?

4

1 回答 1

3

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

托尼在评论中的回答对我有用 - 用于[[NSFileManager defaultManager] linkItemAtURL:toURL:error]将源文件链接到临时文件并将临时文件传递给控制器​​。这不会占用大量额外空间,并且临时链接将在一定时间后删除。

于 2014-02-18T22:44:23.720 回答