Поместите все классы, которые Вы хотите сериализировать в отдельный блок, и затем использовать sgen инструмент для генерации блока сериализации для сериализации к XML. Используйте атрибуты XML для управления сериализацией.
, Если необходимо настроить блок сериализации (и Вы будете потребность, что для поддержки классов, которые не являются IXmlSerializable и классами, которые содержат абстрактные узлы) затем дайте sgen команду выводить исходный код в отдельный файл и затем добавлять его к решению. Тогда можно изменить его по мере необходимости.
http://msdn.microsoft.com/en-us/library/bk3w6240 (По сравнению с 80) .aspx
FWIW, мне удалось сериализировать всю Платформу AdsML (более чем 400 классов) использующий эту технику. Действительно требовалась большая ручная настройка, но существует не обходящий это, если Вы рассматриваете размер платформы. (Я использовал отдельный инструмент для движения от XSD до C#)
Plist и SQLite имеют разные варианты использования.
PList - это формат файла, используемый для хранения небольшого количества структурных данных (менее нескольких сотен килобайт), обычно словаря. PList сам по себе не имеет возможностей сортировки, хотя для его сортировки можно легко написать код.
SQLite - это полноценная база данных. Размеры файлов (на iphone) практически не ограничены. Возможности сортировки встроены. Возможны запросы и конструкции реляционных таблиц.
В C99 вы можете сделать следующее:
int jagged_row0[] = {0,1};
int jagged_row1[] = {1,2,3};
int (*jagged[])[] = { &jagged_row0, &jagged_row1 }; // note the ampersand
// also since compound literals are lvalues ...
int (*jagged2[])[] = { &(int[]){0,1}, &(int[]){1,2,3} };
Единственная разница здесь (по сравнению с ответом rampion) состоит в том, что массивы не распадаются на указатели, и нужно обращаться к отдельным массивам через другой уровень косвенности - (например, * jagged [0]
- и размер каждой строки должен быть записан - то есть sizeof (* jagged [0])
не будет компилироваться) - но они неровные - до костей;)
Из вашего краткого описания я бы порекомендовал SQLite, но я не могу ответить на ваш вопрос относительно производительности.
Что касается примера того, кто использовать SQLite на iphone. У Apple есть пример того, как это сделать здесь