Ios Swift从数据(字节数组)创建URL对象而不写入磁盘

Ios Swift从数据(字节数组)创建URL对象而不写入磁盘,ios,arrays,swift,url,quicklook,Ios,Arrays,Swift,Url,Quicklook,如何从数据(字节数组)创建Swift URL对象,而不将字节写入磁盘 背景: 我需要使用文件查看器(如QuickLook)在iOS(Swift)应用程序中查看安全文件,但我不想将文件写入磁盘。我知道苹果做磁盘加密,但这不是我们的选择。有没有办法将文件查看器(如QuickLook)用于纯内存中的文件?如果您的文档是PDF,您可以直接从数据中初始化PDF文档,并将其显示在PDFView中,但我不能保证PDFDocument最终不会将数据临时写入磁盘。但是,我不认为你可以在不写入磁盘的情况下获得URL

如何从数据(字节数组)创建Swift URL对象,而不将字节写入磁盘

背景:


我需要使用文件查看器(如QuickLook)在iOS(Swift)应用程序中查看安全文件,但我不想将文件写入磁盘。我知道苹果做磁盘加密,但这不是我们的选择。有没有办法将文件查看器(如QuickLook)用于纯内存中的文件?

如果您的文档是PDF,您可以直接从
数据中初始化
PDF文档
,并将其显示在
PDFView
中,但我不能保证
PDFDocument
最终不会将数据临时写入磁盘。但是,我不认为你可以在不写入磁盘的情况下获得
URL

如果你的文档是PDF,你可以直接从
Data
初始化
PDFDocument
并将其显示在
PDFView
中,但我不能保证
PDFDocument
最终不会将数据临时写入磁盘。然而,我认为你不可能在没有写入磁盘的情况下获得
URL

这是标准iOS Quick Look无法做到的。使用A类加密将文件存储在某个临时目录中,如果您不想让它们退出您的应用程序,请使用托管企业应用程序,这样可以确保您的数据不会退出托管世界。如果希望Quick Look支持NSItemProvider,请提交一个bug

标准iOS Quick Look无法做到这一点。使用A类加密将文件存储在某个临时目录中,如果您不想让它们退出您的应用程序,请使用托管企业应用程序,这样可以确保您的数据不会退出托管世界。如果希望Quick Look支持NSItemProvider,请提交一个bug

我们决定采用的解决方案是UIWebView。我们能够使用此呼叫:

webView.load(data: Data, mimeType: String, textEncodingName: String, baseURL: URL)
要显示pdf、docx、xlsx、pptx、pdf、jpeg、png,。。。在我们应用程序中的UIView中。这个调用允许我们直接传入数据,而不必先将数据保存到磁盘

注意:
UIWebView已弃用,我们尝试使用WKWebViewKit。它具有相同的方法签名,但我们无法使文件正确显示。每次结果都只是一堆随机的无意义字符。

我们决定采用的解决方案是UIWebView。我们能够使用此呼叫:

webView.load(data: Data, mimeType: String, textEncodingName: String, baseURL: URL)
要显示pdf、docx、xlsx、pptx、pdf、jpeg、png,。。。在我们应用程序中的UIView中。这个调用允许我们直接传入数据,而不必先将数据保存到磁盘

注意:
UIWebView已弃用,我们尝试使用WKWebViewKit。它具有相同的方法签名,但我们无法使文件正确显示。每次结果都只是一堆随机的无意义字符。

有一种使用URI方案的方法(数据:MIME;base64):
(此代码示例、强制展开等都不安全)


有一种使用URI方案的方法(数据:MIME;base64):
(此代码示例、强制展开等都不安全)


您是否尝试过数据URL?使用位于应用程序临时目录中的文件URL有什么问题?可能重复的URL无法将URL指向内存。您只能将URL指向本地或远程文件资源。@LeoDabus我们不希望用户能够获取这些文件并将其带到应用程序之外。我相信,如果我们使用应用程序临时目录,这是可能的。您是否尝试了数据URL?使用位于应用程序临时目录的文件URL有什么问题?可能是重复的,您无法将URL指向内存。您只能将URL指向本地或远程文件资源。@LeoDabus我们不希望用户能够获取这些文件并将其带到应用程序之外。我相信如果我们使用应用程序临时目录,这是一个很好的PDF解决方案,但理想情况下,我们希望能够处理所有基本文件类型(office文档、文本、图像、mac office)。这就是为什么我们最初研究QuickLook这是一个很好的PDF解决方案,但理想情况下我们希望能够处理所有基本文件类型(office文档、文本、图像、mac office)。这就是我们最初研究QuickLook的原因