我正在编写一个共享扩展程序,它将接受图像并对其执行一些操作。在我的UIViewController
子类的方法中,可以通过编写以下代码来访问URL的文件的特定表示形式:
guard let context = self.extensionContext else {
return
}
guard let items = context.inputItems as? [NSExtensionItem] else {
return
}
for item in items {
guard let attachments = item.attachments else {
continue
}
for attachment in attachments {
guard attachment.hasItemConformingToTypeIdentifier("public.jpeg") else {
continue
}
attachment.loadFileRepresentation(forTypeIdentifier: "public.jpeg") { (url, error) in
if let url = url {
// How long is this "url" valid?
}
}
}
}
在传递给loadFileRepresentation(forTypeIdentifier:completionHandler:)
的代码块中,为我提供了文件的URL,在本例中为JPEG。我可以假设有关此URL有效期有多长时间吗?具体来说,将URL本身写入某些共享存储区是否安全,以便我的应用程序以后可以访问指向的文件?还是应该假设该URL是短暂的,并且如果我想访问它所指向的文件,我应该在此代码块中制作该文件的副本吗?
答案 0 :(得分:1)
loadFileRepresentation
的文档说明:
此方法将文件数据的副本写入临时文件,系统会在完成处理程序返回时将其删除。
因此url
对完成处理程序的右大括号有效。
如果您需要在完成处理程序之外访问文件,则需要在完成处理程序中完成操作之前,将文件复制到具有沙箱的已知位置。