在Objective-c/iPhone中创建自定义类可序列化?

ACB*_*urk 15 iphone serialization objective-c xml-serialization

如何使自己的自定义类可序列化?我特别想把它写到iPhone上的文件中,只是plist而你的类只是一个简单的实例类,只是NSStrings而且可能是NSUrl.

小智 34

您需要实现NSCoding协议.实现initWithCoder:和encodeWithCoder:您的自定义类将与NSKeyedArchiver和NSKeyedUnarchiver一起使用.

你的initWithCoder:应该是这样的:

- (id)initWithCoder:(NSCoder *)aDecoder
{
   if(self = [super init]) // this needs to be [super initWithCoder:aDecoder] if the superclass implements NSCoding
   {
      aString = [[aDecoder decodeObjectForKey:@"aString"] retain];
      anotherString = [[aDecoder decodeObjectForKey:@"anotherString"] retain];
   }
   return self;
}
Run Code Online (Sandbox Code Playgroud)

和encodeWithCoder:

- (void)encodeWithCoder:(NSCoder *)encoder
{
   // add [super encodeWithCoder:encoder] if the superclass implements NSCoding
   [encoder encodeObject:aString forKey:@"aString"];
   [encoder encodeObject:anotherString forKey:@"anotherString"];
}
Run Code Online (Sandbox Code Playgroud)