2010-07-12 57 views
1

我想要做的是将EKEvent转换为NSData,然后将其转换回EKEvent如何从已存在的类创建自定义类? (现有的类不支持NSCoding)

我环顾四周,注意到要使用NSKeyedArchiver,该类必须符合NSCoding协议。我还发现,如果我正在创建自定义类,则可以通过在这样的自定义类上实现encodeWithCoder:来使其符合NSCoding协议。

从本质上讲,我认为以我的EKEventNSData和转换回,​​我需要创建一个自定义类(我们称之为CustomEvent)我需要做到以下几点:

EKEvent --> CustomEvent --> NSData --> CustomEvent --> EKEvent 

能我在学习如何创建一个自定义的类来重新创建一个现有类的帮助,除了我执行encodeWithCoder:以使其符合NSCoding

我在看EKEvent.h,我知道它涉及其他类,我还必须复制(因为它们也不符合NSCoding)。任何人都可以给我一个教程链接或帮助我吗?

在此先感谢!

回答

1

您所描述的内容似乎是subclass

但是,在Objective-C中,您可以更简单地选择category on an existing class来添加所需的功能。

+0

完美!正是我在找什么。所以我创建了.m和.h,但我仍然不知道如何处理以下内容: EKEvent有几个对象,例如: NSDate * _dateStamp;因此,当我从Apple文档(关于自定义子类)定义 - (void)encodeWithCoder:(NSCoder *)编码器时,我发现我应该把: [coder encodeObject:dateStamp forKey:@“dateStamp”]; 当然,XCode抱怨“dateStamp”对象不存在(因为它没有在类别中声明)。我只是重申声明?会有一个问题吗(我假设会)? – 2010-07-13 01:08:54

+0

该字段的名称是'_dateStamp',而不是'dateStamp',只要您导入标题,它应该是可见的。但是,我会小心不要违反未来可能会改变的实现细节。 – Chuck 2010-07-13 01:25:11

相关问题