NSCoding и ostream - PullRequest
       17

NSCoding и ostream

0 голосов
/ 22 апреля 2010

Есть ли лучший способ сериализации объекта 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

1 Ответ

1 голос
/ 23 апреля 2010

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

...