Быстрое создание объекта URL из данных (байтовый массив) без записи на диск - PullRequest
0 голосов
/ 12 февраля 2019

Как создать объект URL Swift из данных (байтовый массив) без записи байтов на диск?

Фон:

Мне нужно использовать средство просмотра файлов(например, QuickLook) для просмотра защищенных файлов в моем приложении iOS (Swift), но я не хочу записывать файлы на диск.Я знаю, что Apple выполняет шифрование диска, но это не вариант для нас.Есть ли способ использовать средство просмотра файлов (например, QuickLook) с файлом, который находится исключительно в памяти?

Ответы [ 3 ]

0 голосов
/ 12 февраля 2019

Это невозможно с помощью стандартного iOS Quick Look.Храните ваши файлы во временном каталоге с шифрованием класса A, и если вы не хотите, чтобы они выходили из вашего приложения, используйте управляемое корпоративное приложение, которое позволяет вам убедиться, что ваши данные не выходят из управляемого мира.Если вы хотите, чтобы Quick Look поддерживал NSItemProvider, сообщите об ошибке.

0 голосов
/ 13 февраля 2019

Решением, с которым мы решили пойти, было UIWebView.Мы смогли использовать этот вызов:

webView.load(data: Data, mimeType: String, textEncodingName: String, baseURL: URL)

для отображения pdf, docx, xlsx, pptx, pdf, jpeg, png, ... в UIView в нашем приложении.Этот вызов позволил нам передать данные напрямую, без необходимости сначала сохранять их на диск.

Примечание: UIWebView устарел, и мы попытались использовать WKWebViewKit.Он имеет такую ​​же сигнатуру метода, но мы не смогли заставить файлы отображаться правильно.Каждый раз результатом была просто куча случайных бессмысленных символов.

0 голосов
/ 12 февраля 2019

Если ваш документ представляет собой PDF, вы можете инициализировать PDFDocument непосредственно из Data и отобразить его в PDFView, но я не могу гарантировать, что PDFDocument в конечном итоге не записывает данные на дисквременно.Однако я не думаю, что вы можете получить URL без записи на диск.

...