Хорошо, я читаю ваш вопрос тремя способами, вот мое лучшее предположение по каждому из них:
- Вы хотите, чтобы ваши
.fruit
файлы были связаны с вашим приложением через Safari / SMS / через какое-то сетевое соединение (иначе, когда кто-то хочет загрузить файлы, созданные для вашего приложения или созданные вашим приложением).
В этом случае вы можете зарегистрировать протокол для своего приложения, как описано здесь:
Ассоциация приложений для расширения файлов iPhone
Вы хотите, чтобы iPhone глобально связывал файлы .fruit
с вашим приложением, и в этом случае вы хотите просмотреть Унифицированные идентификаторы типов . По сути, вы устанавливаете эту связь в файле info.plst
вашего установщика.
Вы хотите знать, как можно перейти от папки с файлами в ней к одной папке (пакету) с расширением .fruit
.
Если это так, есть много вариантов, и я не вижу цели в том, чтобы катиться самостоятельно. И Microsoft, и Adobe просто используют стандартный метод сжатия zip и используют свое собственное расширение (вместо .zip
). Если вы уроните любой документ Office 2007, например, docx
или экспериментальный файл Adobe .pdfxml
, в утилиту архивирования (мне нравится 7z, но подойдет любой спуск), вы получите папку с несколькими файлами XML, как и вы. Опиши для своей ситуации. (Это также, как работает тип файла jar
Java, к вашему сведению). Так что, если у вас нет веских причин избегать стандартных методов сжатия (я голосую за gzip), я бы следовал примеру отрасли в этом.
Я могу определенно оценить стремление сделать DIY на каждом возможном уровне, но вы в основном спрашиваете (если это # 3), как вы можете создать свой собственный алгоритм упаковки, и после прочтения, как работают некоторые из самых основных методов сжатия. Я бы оставил это в покое. Кроме того, я действительно сомневаюсь, что Apple встроила библиотеки для того, что делает большинство людей, для которых просто используются стандартные методы.
Последнее примечание:
Если вы действительно пытаетесь сделать это с нуля (все еще не предлагаете), поскольку все ваши файлы являются XML, вы можете просто создать новый XML-файл, который будет действовать как своего рода обертка, и каждый файл будет добавлен в этот файл. файл обертки. Но это будет действительно излишним, когда придет время развернуть, так как каждый раз придется загружать весь файл. Но это было бы что-то вроде:
Juicy.fruit --
<fruit-wrapper>
<fruit>
<apple>
... content from apple.xml
</apple>
</fruit>
<fruit>
<banana>
... content from banana.xml
</banana>
</fruit>
<fruit>
<pear>
... content from pear.xml
</pear>
</fruit>
<picture>
...URL-encoded binary of preview picture
</picture>
</fruit-wrapper>
Но с этой идеей вам нужно либо распаковать его, и тем самым рискнуть потерять дорожку файлов, перезаписать некоторые, но не все, и т. Д. И т. Д., Или вы всегда рассматриваете это как один большой файл, в этом случае, в отличие от с архивами вы должны загружать все данные каждый раз, чтобы извлечь что-либо, вместо того, чтобы просто извлекать нужный файл из архива.
Но это может сработать, если вы настроены.
Также, если вам интересно, существует протокол передачи, предназначенный специально для XML через мобильные устройства, который называется WBXML (Wap Binary XML). Не уверен, что он все еще воспринимается всерьез, но если для этого есть библиотека для iPhone, вам следует изучить ее.