iPhone UIWebView: loadData не работает с определенными типами (Excel, MSWord, PPT, RTF)

Моя задача состоит в том, чтобы отобразить поддерживаемые типы документов на iPhone с ОС 3.x, такие как .pdf, .rtf, .doc, .ppt, .png, .tiff и т.д.

Теперь, я хранил эти файлы, только зашифрованные на диске. Из соображений безопасности я не хочу хранить их незашифрованный на диске.

Следовательно, я предпочитаю использовать loadData:MIMEType:textEncodingName:baseURL: вместо loadRequest: отобразить документ потому что loadData позволяет мне передавать содержание в объекте NSData, т.е. Я могу дешифровать файл в памяти и не иметь никакой потребности сохранить его на диске, поскольку оно требовалось бы при использовании loadRequest.

Проблема - это loadData кажется, не работает со всеми типами файлов:

Тестирование шоу, что все типы изображения, кажется, хорошо работают, а также PDFs, в то время как более составные типы не делают. Я получаю ошибки, такие как:

NSURLErrorDomain Code=100
NSURLErrorDomain Code=102

Веб-представлению, кажется, нужен действительно рабочий URL для доступа к документам как файл, несмотря на меня уже предлагающий все содержание через объект NSData.

Вот код, который я использую для отображения содержания:

[webView loadData:data MIMEType:type textEncodingName:@"utf-8" baseURL:nil];

Тип пантомимы правильно установлен, например, на "приложение/MSWord" для .doc файлов.

Делает любой знает, как я мог добраться loadData работать со всеми типами это поддержки loadRequest? Или, альтернативно, есть ли некоторый способ, которым я могу сказать, какие типы действительно работают наверняка (т.е. официально санкционированный Apple) с loadData? Затем я могу работать вдвое, создавая временный файл незашифрованный файл только для тех случаев, которые не будет любить loadData.

Обновление

Похож я не первый, сталкивающийся с этим. Посмотрите здесь:

http://osdir.com/ml/iPhoneSDKDevelopment/2010-03/msg00216.html

Так, я предполагаю, это - статус-кво и ничто, что я могу делать с этим.

Кто-то предложил обходное решение, которое могло бы работать, хотя:

http://osdir.com/ml/iPhoneSDKDevelopment/2010-03/msg00219.html

В основном идея состоит в том, чтобы обеспечить крошечный http сервер, который служит файлу (из памяти в моем случае), и затем используйте loadRequest. Это является, вероятно, немного более интенсивно использующим память, тем не менее, поскольку и сервер и webview будут, вероятно, оба содержать все содержание в памяти как две копии затем, в противоположность использованию loadData, где оба совместно использовали бы тот же объект данных. (Обратите внимание, я должен буду держать дешифрованные данные в памяти, это - самое главное здесь).

11
задан Thomas Tempelmann 4 May 2010 в 11:22
поделиться

1 ответ

У меня возникла очень похожая проблема (однако я получаю свои файлы с сервера), я увидел ваш пост и подумал, что это тупик, а затем случайно начал экспериментировать на устройстве (в данном случае iPad), и оно работал, когда я дал baseURL в качестве того, что я использовал для его получения с сервера, и он работал, но не работает на симуляторе. Я бы попробовал это, иначе я бы отправил отчет об ошибке в Apple.

8
ответ дан 3 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: