Библиотека XML-сериализации для [закрытых] приложений для iPhone

Нет, Вы не делаете , имеют к. Но если Вы хотите для изменений в app.config вступить в силу, Вы, возможно, должны были бы перезапустить его. Или Вы могли бы хотеть реализовать механизм наблюдателя файла пользовательской конфигурации, который изменит настройки сервисов на лету.

11
задан Enyra 19 September 2009 в 16:20
поделиться

5 ответов

Это неплохая идея, с точки зрения реализации я бы сделал это, реализовав NSXMLArchiver и NSXMLUnarchiver как подклассы NSCoder. Таким образом, любой класс, соответствующий протоколу NSCoding, может быть легко сериализован в XML и из него.

Одним из ударов производительности при сериализации в XML будут примитивные значения в качестве атрибутов, потому что вы не можете гарантировать порядок, в котором объект будет запрашивать данные. закодировано. Так что, если атрибуты - это то, что вы хотите, тогда они будут довольно большими в буферах памяти. Но это было бы забавное упражнение.

А насколько популярным оно будет? Думаю, не так популярно. Сценарий использования слишком мал.

  • От устройства к устройству - Простое использование NSKeyedArchiver намного проще и НАМНОГО компактнее.
  • От устройства к новому серверу - новый сервер должен будет реализовать ту же схему а также сериализацию в Java, C # или что-то еще.
  • От устройства к существующему серверу - формат XML уже исправлен и, скорее всего, не близок к этому.
0
ответ дан 3 December 2019 в 11:52
поделиться

NSKeyedArchiver работает именно потому, что он не пытается отобразить на схему XML. Многие, многие схемы XML плохо спроектированы (т.е. они переводят структуру объекта в памяти во внешний формат представления). Ключевая проблема заключается в том, что документы должны быть спроектированы так, чтобы иметь смысл с точки зрения документа, и что затем это нужно будет сопоставить с любым макетом памяти, который вы хотите для своих объектов. Вы когда-нибудь видели XML-документы с множеством атрибутов refid, относящихся к другим частям документа? Обычно они транслитерируются из реляционной базы данных, которая просто наклеивает угловые скобки на набор результатов.

Поэтому, начиная с предположения о взаимно-однозначном отображении между XML-документом и его представлением кода, в значительной степени обречены все, кроме простейших случаев. . Просто подумайте, где бы мы были сегодня с HTML, если бы он был разработан вокруг объектов C ++, которые использовались для создания экземпляра документа в первом браузере ... (ну, больше похоже на Objective-C, но эй ...)

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

2
ответ дан 3 December 2019 в 11:52
поделиться

То, что вы описываете, скрыто внутри реализаций ObjectiveResource и поддерживает как JSON, так и XML. Это должно быть довольно легко разделить и свести к одному синтаксическому анализу, отбросив все управление соединениями.

0
ответ дан 3 December 2019 в 11:52
поделиться

Я боролся с требованиями в этой области и думаю, что это была бы отличная идея. Мне приходилось запугивать мои сервисы точечной сети, чтобы они возвращали JSON для удобного использования на iPhone. Приличная библиотека сериализации была бы превосходной.

0
ответ дан 3 December 2019 в 11:52
поделиться

Я начал аналогичный проект с открытым исходным кодом. Я назвал его САМИКСОС. вы можете посетить эту страницу и попробовать. Это в начальной стадии разработки. Он работает аналогично тому, о чем просила Энира.

Скоро я предоставлю образец кода.

http://sourceforge.net/projects/samixos/

Sami

1
ответ дан 3 December 2019 в 11:52
поделиться