Необходимо использовать NetDataContractSerializer. Это покрывает любой вид графа объектов и поддерживает дженерики, списки, полиморфизм (атрибут KnownType не нужен здесь), рекурсия и и т.д. Единственный недостаток состоит в том, что необходимо отметить все Вы классы с [сериализуемым] / [DataContract] атрибуты, но опыт показывает, что необходимо сделать своего рода руководство, подстраивающее так или иначе с тех пор не, все участники должны быть сохранены. Также это сериализирует в Xml, хотя его удобочитаемость сомнительна.
Мы имели те же требования как Ваш и выбрали это решение.
Обновление:
Техническое примечание в моем исходном ответе теперь не рекомендуется. Apple опубликовала коллекцию проблем с подписью кода (и некоторые решения) в новом документе: Техническое примечание TN2407 Индекс устранения проблем с подписью кода
Проверьте свойство CODE_SIGN_IDENTITY в настройках сборки. Выбран ли ваш профиль обеспечения?
Вам также необходимо ввести действительный идентификатор пакета в .plist вашего приложения.
Идентификатор должен совпадать с тем, который вы указали при создании профиля.
У Apple есть технический комментарий по этому поводу здесь .
Я только что столкнулся с этой ошибкой, и вот что я узнал на тот случай, если это кому-то поможет: я обнаружил, что вы можете щелкнуть правой кнопкой мыши сообщение об ошибке в Xcode и выбрать «развернуть», чтобы получить дополнительные сведения, включая описание проблемы.
В моем случае у меня было две копии сертификата разработчика с одинаковым именем в разных файлах связки ключей, и Xcode не мог понять, какую из них использовать.
У меня была такая же проблема. В конце концов выяснилось, что мой закрытый ключ не позволяет codeign получить к нему доступ. Это можно увидеть в информационном диалоге приложения связки ключей.
Я должен согласиться с Тобиасом. Ошибка слишком общего характера. Когда то же самое случилось со мной, я покопался в сообщении об ошибке и понял, что что-то напортачил в свойствах сборки, но не в подписи кода. Так что да, я бы углубился в детали.
Одна из возможных причин - у вас нет разрешения на запись в каталог сборки.
Решение: Удалите все каталоги сборки в папке проекта и пересоберите приложение.
Я только что столкнулся с этой ошибкой, и она возникла из-за того, что я пытался записать файл сборки на сетевой диск, который не работал. Попробовал снова с рабочего стола, и все заработало нормально. (Возможно, вам придется "очистить" сборку после ее перемещения. Просто выберите "Очистить все цели" в выпадающем меню "Сборка").
Тобиас прав, однако, копайтесь в деталях кода, щелкнув его правой кнопкой мыши, чтобы понять, в чем конкретно заключается ваша проблема.