Есть ли лучший способ сериализации объекта ObjC, чем использование / NSKeyedArchive?
Мне нужно распространить объект через объект типа C ++ std: ostream, чтобы поместить его на другой компьютер.
Объект имеет более 122 членов различных типов ... для чего хочет, чтобы я
[coder encodeObject: (id) forKey: @"blah"];
для всех них ...
У кого-нибудь есть хороший Perl Script, который хотя бы выпишет его? Я даже не знаю, реализуют ли объекты, содержащиеся в нем, что означает, что это может превратиться в огромный ужасный беспорядок, так как я не могу изменить источник объекта - мне придется наследовать и добавлять @interface
к нему .. .
Или я тупой? Руководство Apple мне не помогает, так как архивация в XML не пройдет хорошо, хотя ostream.
Есть ли лучший способ сделать это?
-S!
[Редактировать 1]
Итак, я посмотрел на NSCoding, и мои классы содержат общие NSManagedObjects
..., которые не соответствуют <NSCoding>
. Я попытался использовать Аспектно-ориентированное программирование, найденное [здесь] [2] - но это приводит к бесконечной рекурсии во время выполнения. (по крайней мере, это то, что я предполагаю, что стек вызовов 104795 вызовов [id encodeWithCoder:]
.
Кроме того, я не могу просто добавить <NSCoding>
к классу, так как я загружаю его, так как его члены являются объектами импортированного фреймворка. Я не могу просто добавить протокол к нему, поэтому я подумал, что Aspect-Oriented материал будет работать.
Последняя (и ужасная) идея, которая у меня есть, - создать подклассы для каждого класса, который мне нужен, и реализовать там протоколы. Огромный контрольно-пропускной пункт, который я могу предвидеть, состоит в том, включают ли классы NSArrays of Classes, не представленные в платформе. Тогда я потонул.
Есть ли лучший способ сделать это? Я чувствую, что это решение времени разработки, и сейчас уже слишком поздно добавлять эту возможность.
помощь ...
PS
вся эта антиспамовая штука с ограничивающими ссылками - отстой. Как я должен задавать умные вопросы!?
[2]:
http: / /davedelong.com/blog/2009/04/13/aspect-oriented-programming-objective-c#comment-803