Надеюсь, вы поможете.

приложение для iPad может отображать документы и сохранять их в автономном режиме при необходимости. У меня есть подкласс QLPreviewController с именем DocumentViewController (теперь он называется DVC) для их отображения.

Рабочий процесс приложения: - Пользователь щелкает по имени документа, и DVC нажимается, чтобы показать документ. - DVC загружает файл в автономном режиме и показывает его, когда закончите. (Таким образом, URL-адрес HTTP загружается, сохраняется в автономном режиме и возвращается автономный URL-адрес)

Странно то, что с автономным URL-адресом работают только PDF-файлы, а остальные сбои ... (хотя он работает и с онлайн-ссылками)

Я провел несколько тестов, и когда я помещаю file: // перед автономной ссылкой, приложение не падает, но DVC предоставляет мне некоторую информацию о файле (например, это документ Excel 97-2004).

Так что некоторая информация передается, но я не могу понять, в чем проблема.

Вот несколько скриншотов, а затем немного кода.

код:Обратите внимание, что Document - это класс модели со свойствами документа, такими как id, имя, тип файла и URL.

//DVC QLPreviewController dataSource method for returning url
- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger)index
{
    [SaveHelper saveDocumentFileAndPropertyWithDocument:document];

    //[SaveHelper getDocumentFileWithDocument:document]; without file://
    //if I return document.documentUrl it is working with all files except iworks files)
    return [SaveHelper getDocumentFileAsPathWithDocument:document]; //with file://
}

//SaveHelper methods
+ (NSString *)documentFilePathWithDocument:(Document *)document
{
    return [[self documentFilePath] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@%d.%@", DOCUMENT_FILE_PREFIX, document.documentId, document.documentType]];
}

+ (NSURL *)saveDocumentFileAndPropertyWithDocument:(Document *)document
{
    if([self saveDocumentPropertyWithDocument:document])
    {
        return [self saveDocumentFileWithDocument:document];
    }

    return nil;
}

+ (NSURL *)saveDocumentFileWithDocument:(Document *)document
{
    NSData *data = [NSData dataWithContentsOfURL:document.documentURL];

    NSString *fullPath = [self documentFilePathWithDocument:document];

   if([[NSKeyedArchiver archivedDataWithRootObject:data] writeToFile:fullPath atomically:YES])
   {
       return [NSURL fileURLWithPath:fullPath];
   }

    return nil;
}

+ (NSURL *)getDocumentFileWithDocument:(Document *)document
{
    return [NSURL fileURLWithPath:[self documentFilePathWithDocument:document]];
}

+ (NSURL *)getDocumentFileAsPathWithDocument:(Document *)document
{
    return [NSURL fileURLWithPath:[@"file://" stringByAppendingPathComponent:[[self getDocumentFileWithDocument:document] absoluteString]]];
}

Если нужно больше кода, просто скажите.

РЕДАКТИРОВАТЬ:

При регистрации URL-адрес, переданный через метод getDocumentFileAsPathWithDocument:

url: file:/var/mobile/Applications/xx-xx/Documents/documentFiles/file_20.pdf
url: file:/var/mobile/Applications/xx-xx/Documents/documentFiles/file_80.docx

Где файл PDF работает, а документ не

Когда я пытаюсь загрузить изображение (jpg) из локального хранилища, я получаю черный экран с таким сообщением об ошибке:

warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.5 (8L1)/Symbols/System/Library/Frameworks/QuickLook.framework/DisplayBundles/Image.qldisplay/Image (file not found).
warning: No copy of Image.qldisplay/Image found locally, reading from memory on remote device.  This may slow down the debug session.

РЕДАКТИРОВАТЬ:

Веб-просмотр также не работает с локальными URL-адресами. PDF в порядке, но файлы office выдают сообщение «Невозможно прочитать документ, неверный формат файла». Документы iWorks выдают ту же ошибку, что и быстрый просмотр. Я думаю, что это где-то в сохранении и загрузке формата, я сохраняю их как NSDATA, но после этого у iPad нет никаких подсказок, чтобы увидеть, является ли это, например, документом Word (только расширение).

Ответы на вопрос(5)

Ваш ответ на вопрос