Использование Plist в других средах

Ограничено ли использование Pists в системах OSX и iOS?

Я думаю об архитектуре своего приложения, и один из многих способов импортировать данные в приложение для iPhone — через Plist, и вы также можете сохранить его.

Теперь, если сказать, что plist можно экспортировать из приложения в необработанном формате, будет ли он доступен, скажем, в формате Android или Windows Phone? Или нужно будет конвертировать?

Насколько я понимаю, Plist - это формат XML, верно? Я, вероятно, ошибаюсь, но это то, что я могу сделать из файла, когда смотрю на него.

Ваше здоровье


person jwknz    schedule 13.11.2012    source источник


Ответы (2)


Ты прав. Plist на самом деле представляет собой файл в формате xml с расширением plist header и может быть проанализирован любым xml parser. Поскольку xml можно использовать в различных средах, plist может делать то же самое. Просто измените его суффикс на xml, и вы можете делать все, что хотите.

person Ben Lu    schedule 13.11.2012
comment
ах, так что мне нужно будет разобрать обычный XML-файл, а затем снова вернуться, если это куда вернуться в приложение iOS ?? - person jwknz; 13.11.2012
comment
@JeffKranenburg Вам не нужно parse преобразовывать его в xml. Это это xml. Просто измените его суффикс на xml, и вы обнаружите, что iOS по-прежнему распознает его как plist и распознает на других платформах. - person Ben Lu; 13.11.2012
comment
Я только что перечитал ваш ответ и обнаружил, что мой комментарий основан на том, что, как я думал, вы написали :-) Спасибо за помощь :-) - person jwknz; 13.11.2012

Список свойств, как описано в Руководство по программированию списка свойств:

  • строка
  • блок двоичных данных
  • свидание
  • целое число
  • число с плавающей запятой
  • логическое значение
  • массив списков свойств
  • словарь, ключи которого — строки, а значения — списки свойств

Существует два распространенных способа сериализации списка свойств.

Одним из них является формат XML, о котором вы знаете. Этот формат задокументирован в plist(5) справочная страница.

Другой — двоичный формат, который намного компактнее и быстрее для кодирования и декодирования. Официально он нигде не документирован, но его формат описан в комментариях и коде CFBinaryPlist.c, который включен в версию Apple Core Foundation с открытым исходным кодом.

Если в ваших данных не используются даты или двоичные двоичные объекты, вам может быть проще использовать JSON, чем список XML. Начиная с iOS 5 и OS X 10.7 (Lion), Apple предоставляет ссылку NSJSONSerialization class для сериализации и десериализации JSON, и существуют библиотеки JSON практически для каждой платформы и языка.

person rob mayoff    schedule 13.11.2012
comment
Я посмотрю на это, спасибо :-) Приложение будет использовать даты, а также координаты местоположения, поэтому я не уверен, что способ JSON будет работать. Это также все еще в моем списке вещей, чтобы учиться :-) - person jwknz; 13.11.2012
comment
Обратите внимание, что вы можете представлять даты в виде строк или чисел, если вам нужно сохранить их в формате JSON. Вам просто нужно будет сделать это преобразование самостоятельно. Ни JSON, ни списки свойств не поддерживают координаты местоположения в качестве собственного типа. - person rob mayoff; 13.11.2012
comment
Еще один вопрос, если вы не возражаете: XML уже не работает? Я не очень позитивно отношусь к этому, и JSON, кажется, становится популярным. Это личное предпочтение для вас, или это просто путь? - person jwknz; 13.11.2012
comment
Я бы не сказал, что он полностью исчезает. Это просто излишество для многих вариантов использования, но не было популярной и более простой альтернативы, пока не появился JSON. Это тема многих сообщений в блогах, поэтому просто наберите в Google «xml отстой» или «json отстой», когда вам захочется отложить. :) - person rob mayoff; 13.11.2012
comment
Это круто :-) Jut дал мне еще один повод изучить JSON - спасибо за ваши советы и помощь :-) - person jwknz; 13.11.2012
comment
Кроме того, если вы используете plist и работаете с командной строкой, вам пригодятся команды plutil и /usr/libexec/PlistBuddy. Гуглите их. - person rob mayoff; 13.11.2012