2010-10-27 27 views
7

Làm thế nào để bạn sử dụng NSCoder để mã hóa và giải mã các loại tùy chỉnh?NSCoder và các loại tùy chỉnh

Ví dụ, làm thế nào bạn sẽ sử dụng NSCoder với một thể hiện của "STATE" nơi:

typedef enum { ON, OFF } STATE; 

Trả lời

13

Bạn có thể đối xử với họ như số nguyên khi chúng được mặc nhiên được gán giá trị số nguyên:

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

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

Ngoại trừ việc sự thay đổi thứ tự trong nội bộ trong enum sẽ phá vỡ mã hóa. – Kenneth

+0

Và bạn đặt các lớp này vào lớp nào? Họ là những loại, không phải đối tượng ... 'NSKeyedArchiver'? –

+0

Để hỗ trợ mã hóa và giải mã các thể hiện, một lớp phải chấp nhận giao thức NSCoding và thực hiện các phương thức của nó. Một đối tượng được mã hóa hoặc giải mã có trách nhiệm mã hóa và giải mã trạng thái của nó. – Ushox

Các vấn đề liên quan