我正在编写一个共享扩展,它将接受图像并与它们一起执行一些操作。在我的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是短暂的,如果我想访问它所指向的文件,我应该在这个块中创建自己的文件副本?
发布于 2019-05-07 23:35:41
loadFileRepresentation的文档声明:
此方法将文件数据的副本写入临时文件,系统在完成处理程序返回时删除该文件。
因此,url对于完成处理程序的结束大括号是有效的。
如果需要访问完成处理程序之外的文件,则需要在完成处理程序中完成之前将文件复制到沙箱中的已知位置。
https://stackoverflow.com/questions/56031648
复制相似问题