NSCoding和ostream

时间:2010-04-22 19:53:16

标签: objective-c iostream nscoding

是否有比使用/ NSKeyedArchive更好的序列化ObjC对象的方法?

我需要通过C ++ std:类似于ostream的对象分发对象以放在另一台计算机上。

该对象有超过122个不同类型的成员......我想要

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

所有人......

有没有人有一个很好的Perl脚本,至少会写出来?我甚至不知道它包含的对象是否实现,这意味着这可能会变成一个巨大的丑陋混乱,因为我无法改变对象的来源 - 我将不得不继承&将@interface添加到其中......

还是我愚蠢? Apple's guide对我没有帮助,因为归档到XML不会很好地通过ostream。

有更好的方法吗?

-S!


[编辑1]
所以我查看了NSCoding,我的类包含通用的NSManagedObjects ...,它们不符合<NSCoding>。我已经尝试使用[here] [2]中找到的面向方面编程 - 但这会导致在运行时无限递归。 (至少我认为104795调用[id encodeWithCoder:]的调用堆栈是。

另外,我不能在我加载时将<NSCoding>添加到类中,因为它的成员是导入框架的对象。我不能只是添加协议,这就是为什么我认为面向方面的东西会起作用。

我拥有的最后一个(也是可怕的)想法是将我需要的每个类子类化,并在那里实现协议。我可以预见的一个巨大障碍是,如果类包含未在框架中公开的类的NSArrays。然后我沉没了。

有更好的方法吗?我觉得这是一个设计时决定,现在添加此功能为时已晚。

帮助...

PS

这整个反垃圾邮件的东西限制链接很糟糕。我该怎么问智能问题??

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

1 个答案:

答案 0 :(得分:1)

使用NSCoding绝对是正确的方法。如果您不想键入所有与NSCoding相关的样板(我同意,这很痛苦),请查看可以为您编写的Accessorizer