2010-10-27 173 views
7

如何使用NSCoder对自定义类型进行编码和解码?NSCoder和自定义类型

例如,你将如何使用NSCoder与实例“STATE”其中:

typedef enum { ON, OFF } STATE; 

回答

13

你可以把它们作为整数,因为它们隐含分配整数值:

- (void) encodeWithCoder: (NSCoder *)coder { 
    ... 
    [coder encodeInt:type forKey:@"state"]; 
} 

- (id) initWithCoder: (NSCoder *)coder { 
    ... 
    state = [coder decodeIntForKey:@"state"]; 
} 
+1

除在枚举内部的顺序改变会破坏编码。 – Kenneth 2012-06-29 08:39:25

+0

你们把这些方法放在哪一类?他们是类型,而不是对象...'NSKeyedArchiver'? – 2012-11-23 01:32:39

+0

为了支持实例的编码和解码,一个类必须采用NSCoding协议并实现其方法。被编码或解码的对象负责对其状态进行编码和解码。 – Ushox 2012-11-30 06:01:51