2010-07-26 1 views
2

В настоящее время я разрабатываю лучшую структуру для документа, который я пытаюсь создать. Документ в основном является основным документом данных, который использует sqlite в качестве своего хранилища, но использует предоставленный Apple NSPersistentDocument + FileWrapperSupport, чтобы включить поддержку файловой оболочки.Рекомендуемая структура документа. Упаковщики файлов? Ролл мой собственный?

В документе широко используются носители, такие как изображения, видео, аудиофайлы и т. Д. С потенциально 1000 файлами. Так что я пытаюсь сделать, это создать структуру, подобную следующей:

/myfile.ext/ 
/myfile.ext/store.sqlite 
/myfile.ext/content/ 
/myfile.ext/content/images/* 
/myfile.ext/content/videos/* 
/myfile.ext/content/audio/* 

Теперь, в первую очередь я пошел по пути создания временного каталога и размещения всех моих средств массовой информации там. В основном создавая пути и имена файлов «/content/images/image1.jpg», поскольку я хотел, чтобы они появлялись в сохраненной файловой оболочке, а затем после сохранения я попытался скопировать их все в файл ...

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

Отлично.

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

Когда изображение было добавлено/изменено, я создал необходимые обертки каталога внутри этой корневой оболочки содержимого (т. Е. Обертка каталога изображений, если она еще не существовала, или любые другие обертки каталога промежуточного каталога, которые необходимо было создать) и затем создала обычную оболочку файла для носителя, удалив любую существующую оболочку для этого имени файла, если она была там.

Сохранение документа - это всего лишь случай, когда оболочка файла содержимого была добавлена ​​в обертку файла документа, и документ будет сохранен.

Ну ... это было. Первый раз. Тем не менее, любые попытки сделать любые последующие изменения, а также добавить изображение, сохранить. Затем замените изображение, сохраните. Не вел себя так, как ожидалось, только показывая изображение с первого сохранения.

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

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

ответ

0

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

Возможно, вы захотите сделать zip/unzip любой каталог, чтобы пользователи не путались, пытаясь прикрепить документ к электронному письму. Я считаю, что iWork уже давно это делает со своими пакетами документов.

Насколько вы ошибаетесь, никто не может сказать, поскольку вы не предоставили никакого кода, демонстрирующего, что вы делаете.

Почему вы не создаете одноразовое приложение, которое позволяет вам выбирать файлы на диске и сохранять эти файлы в документе с помощью файловой оболочки?Это позволит вам решить эту функциональность без каких-либо помех от других проблем вашего приложения. Как только вы поймете, как использовать обертки файлов, вы можете вернуть код или просто написать новый код, который работает.

 Смежные вопросы

  • Нет связанных вопросов^_^