0

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

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

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

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

对于他们所有人...

有没有人有一个不错的 Perl 脚本至少可以写出来?我什至不知道它包含的对象是否实现,这意味着这可能会变成一个巨大的丑陋混乱,因为我无法更改对象的来源 - 我必须继承并添加@interface它......

还是我傻? Apple 的指南对我没有帮助,因为归档到 XML 不会很好地通过 ostream。

有一个更好的方法吗?

-S!


[编辑 1]
所以我查看了 NSCoding,我的类包含NSManagedObjects不符合<NSCoding>. 我尝试使用 [here][2] 找到的 Aspect Oriented Programming - 但这会导致运行时无限递归。(至少这就是我假设的 104795 调用的调用堆栈[id encodeWithCoder:]

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

我的最后一个(也是可怕的)想法是对我需要的每个类进行子类化,并在那里实现协议。我可以预见的一个巨大障碍是这些类是否包含未在框架中公开的类的 NSArray。然后我沉没了。

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

帮助...

附言

这整个带有限制链接的反垃圾邮件很糟糕。我应该怎么问聪明的问题!?

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

4

1 回答 1

1

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

于 2010-04-22T23:50:05.267 回答