NSItemProvider 的 URL 的有效时间

bde*_*ham 1 uikit swift

我\xe2\x80\x99m 编写一个共享扩展,它将接受图像并用它们执行一些操作。在我的子类的方法中UIViewController,我可以通过编写以下内容来访问文件的特定表示形式的 URL:

\n\n
guard let context = self.extensionContext else {\n    return\n}\nguard let items = context.inputItems as? [NSExtensionItem] else {\n    return\n}\n\nfor item in items {\n    guard let attachments = item.attachments else {\n        continue\n    }\n\n    for attachment in attachments {\n        guard attachment.hasItemConformingToTypeIdentifier("public.jpeg") else {\n            continue\n        }\n        attachment.loadFileRepresentation(forTypeIdentifier: "public.jpeg") { (url, error) in\n            if let url = url {\n                // How long is this "url" valid?\n            }\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我传递给 的块中loadFileRepresentation(forTypeIdentifier:completionHandler:),I\xe2\x80\x99m 给出了文件\xe2\x80\x94(在本例中为 JPEG)的 URL。我可以假设该 URL 的有效期限是多久吗?具体来说,将 URL 本身写入某个共享存储区域以便我的应用程序稍后可以访问指向的文件是否安全?或者我应该假设 URL 是短暂的,并且如果我想访问它指向的文件,我应该在这个块中制作我自己的该文件的副本?

\n

rma*_*ddy 5

状态的文档loadFileRepresentation

\n\n
\n

此方法将 file\xe2\x80\x99s 数据的副本写入临时文件,系统在完成处理程序返回时删除该临时文件。

\n
\n\n

因此url对于完成处理程序的右大括号有效。

\n\n

如果您需要在完成处理程序之外访问文件,则需要在完成处理程序中完成之前使用沙箱将文件复制到已知位置。

\n