Предварительная загрузка документов в приложение iOS

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

Проблема . Как создать документ (или файл шаблона) и отобразить его в папке «Документы» после того, как пользователь установит мое приложение и запустит его (и все предыдущие времена)?

Справочная информация . Этот документ (тот, который будет установлен в каталоге документов приложения) создается мной, а не пользователем.

Я знаю, что для этого вам нужно сохранить его в своем комплекте, а затем, когда ваше приложение запускается в первый раз, незаметно скопируйте его в каталог документов. Должен ли я копировать его в методе appDidFinishLaunchingWithOptions или в методе viewDidLoad и писать логику, чтобы определить, запущено ли приложение в первый раз?

Мой код : На этой веб-странице: http://textsnip.com/d35fbc. Но когда он запускается, он всегда говорит: «Файл не существует [в папке с документами]», то он сообщает мне, что он копируется. Проблема в том, что когда я просматриваю папку документов приложения, она никогда не существует, она все еще находится в комплекте.

Почему это не копируется с помощью этого кода. Как это работает?

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

Следующий код копирует текстовый файл с верхнего уровня моего пакета в каталог документов, если он еще не существует.

NSFileManager *fileManager = [NSFileManager defaultManager]; NSError *error; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *txtPath = [documentsDirectory stringByAppendingPathComponent:@"txtFile.txt"]; if ([fileManager fileExistsAtPath:txtPath] == NO) { NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"txtFile" ofType:@"txt"]; [fileManager copyItemAtPath:resourcePath toPath:txtPath error:&error]; } 

Единственным недостатком этого кода является то, что если пользователь удаляет файл, он сразу же появляется, когда они снова открывают приложение.

Как вы сказали, вы включаете его в свой комплект приложений (добавьте его в свой проект и убедитесь, что он является частью вашей цели). Затем вы можете получить доступ к этому пути, вызвав что-то вроде этого:

 NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"MyTemplateDoc" ofType:@"extension"]; 

Затем вы скопируете его в папку документов вашего приложения.

 NSString *docPath = <a path in your documents folder> NSError *error = nil; [[NSFileManager defaultManager] copyItemAtPath:bundlePath toPath:docPath error:&error]; if (error) { // handle copy error. } 
  • NSFileManager Attributesforitem не работает и возвращает null
  • Шифрование файловой системы для IOS?
  • Как получить локальные файлы с помощью NSURL?
  • Доступ к файлам в папке «личные документы», переданной с помощью iTunes
  • Interesting Posts

    Как нажимать на ios google map marker программно или показывать информационное окно маркера?

    Создавайте 2-секундные аудиофайлы во время записи с помощью AVAudioRecorder

    xcodebuild архивирует все цели вместо одного

    React-Native + Flex не реагирует на изменение ориентации

    Переместите UIView, когда появится клавиатура с функцией AutoLayout

    TVOutManager работает на Simulator, но не на устройстве?

    Панель поиска iOS 11, прыгающая в начало экрана

    iOS Swift Множественные размерные массивы – компиляция занимает много времени. Что я должен изменить?

    iOS реальные монотонные часы, кроме mach_absolute_time ()

    Почему семейство функций printf заботится о локали?

    Сохранение url записи в основных данных, но не работает, когда я пытаюсь использовать его позже

    Запрос Sqlite для поиска слова поиска со смежными словами

    Как я могу угаснуть / опустить фон моего приложения, сохранив несколько в нормальном состоянии? Например, уведомление

    неожиданный ввод с внешнего устройства – iOS

    основные ошибки данных, добавляющие новую запись

    Давайте будем гением компьютера.