iphone - 使用 UIDocumentInteractionController 处理临时文件

标签 iphone objective-c ios ios6

我将 UIDocumentInteractionController 与下载后驻留在缓存中的临时文件一起使用。我正在使用一个非常简单的类,它向我的应用程序提供 md5-cache 文件名 (ext = cache),下载的文件就是这种格式。原因是在本地有文件并且只下载一次(一个 session )。由于缓存名称采用统一格式,因此我可以轻松清理它们。

现在有了 UIDocumentInteractionController,我需要将这些文件重命名回它们的原始名称,否则它们将无法被正确识别。

UIDocumentInteractionController 完成文件传递时,我想将文件移回其缓存文件名。问题是,方法:- documentInteractionController:didEndSendingToApplication: 永远不会被调用 - 尽管委托(delegate)设置正确。

我是如何设置 Controller 的:

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

关于如何正确发现文件已移交给另一个应用程序/或 UIDocumentInteractionController 已被取消的任何建议?

最佳答案

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

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

关于iphone - 使用 UIDocumentInteractionController 处理临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12454645/

相关文章:

ios - 我正在尝试创建多个具有不同类的自定义单元格

iOS 8 获取键盘高度

objective-c - uisplitviewcontroller 在左 View 中的定位问题

ios - Image.grayscale(1.0) 在 SwiftUI 中返回全彩色图像

ios - Swift - 如何覆盖具体子类中的扩展方法

iphone - 集成iOS6 facebook功能

iphone - 在有限的时间内锁定 iPhone

ios - 如何在 UIAlertController 上添加动态按钮?

Objective-C NSRegularExpressions,查找字符串中数字的第一次出现

ios - 如何在 swift 中创建可变数量的 UIImageViews