2010-10-27 157 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