2010-04-22 3 views
0

Есть ли лучший способ сериализации объекта ObjC, чем использование/NSKeyedArchive?NSCoding и ostream

Мне нужно распространять объект через объект типа C++ std: ostream для размещения на другом компьютере.

Объект имеет более 122 членов различных типов ... для которых хочет меня

[coder encodeObject: (id) forKey: @"blah"]; 

для всех из них ...

Кто-нибудь есть хороший Perl скрипт, который будет по крайней мере, написать это? Я даже не знаю, содержат ли объекты, которые он содержит, что означает, что это может превратиться в огромный уродливый беспорядок, поскольку я не могу изменить источник объекта - мне нужно наследовать &, добавьте @interface к нему ...

Или я тупой? Apple's guide не помогает мне, так как архивирование в XML не пройдет очень хорошо, несмотря на ostream.

Есть ли лучший способ сделать это?

-S!


[Edit 1]
Так что я смотрел на NSCoding, и мои классы содержат общие NSManagedObjects ... которые не соответствуют <NSCoding>. Я попытался использовать Aspect Oriented Programing, найденный здесь [2], но это приводит к бесконечной рекурсии во время выполнения. (по крайней мере, это то, что я предполагаю, что стек вызовов из 104795 звонков на [id encodeWithCoder:] есть.

Плюс, я не могу просто добавить <NSCoding> в класс, поскольку я загружаюсь, так как его члены являются объектами импортированной инфраструктуры. 't просто добавьте к нему протокол, поэтому я думал, что работа с Aspect-Oriented будет работать.

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

Есть ли лучший способ сделать это? Я чувствую, что это решение времени разработки, и уже слишком поздно добавлять эту возможность.

помощь ...

PS

вся эта анти-спам вещь с предельной ссылкой сосать. Как я должен задавать разумные вопросы !?

[2]: HTTP://davedelong.com/blog/2009/04/13/aspect-oriented-programming-objective-c#comment-803

ответ

1

Использование NSCoding, безусловно, правильный путь идти. Если вы не хотите набирать весь шаблон, связанный с NSCoding (и я согласен, это боль), взгляните на Accessorizer, который может написать его для вас.

+0

Я нашел [это] (http://davedelong.com/blog/2009/04/13/aspect-oriented-programming-objective-c#comment-803 «Аспектно-ориентированное программирование ObjC») Что делает именно то, что я хотеть. Поскольку я не могу редактировать класс (это в рамках), я не хотел создавать массивное отвратительное дерево наследования с добавлением . Но ... я буду использовать Accessorizer.Это выглядит небесно. –