NSCoding
カスタム オブジェクトをシリアル化するには、プロトコルに準拠する必要があります。あなたのオブジェクトが NSObject を拡張する場合、あなたがする必要があるのは(私が信じている)これらを実装することだけです(人のオブジェクトの例):
// Encode an object for an archive
- (void)encodeWithCoder:(NSCoder *)coder
{
[super encodeWithCoder:coder];
[coder encodeObject:name forKey:@“Name”];
[coder encodeInteger:age forKey:@“Age”];
}
// Decode an object from an archive
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
name = [[coder decodeObjectForKey:@“Name”] retain];
age = [coder decodeIntegerForKey:@“Age”];
}
NSArray
NSDictionary
シリアル化のメソッドを既に実装しています。それらは、保持するすべてのオブジェクトをシリアル化します (オブジェクトが NSCoder インターフェイスを実装している場合 - それらが NSObject を拡張している場合)。NSObjectはデフォルトencodeWithCoder
でinitWithCoder
は何もしないので、クラスに独自のコードを実装しない限り、何もシリアル化されません。
オブジェクトの NSArray または NSDictionary がある場合は、次を使用してそれらを同期できます。
// Writing
- (BOOL)writeToFile:(NSString *)aPath atomically:(BOOL)flag;
- (BOOL)writeToURL:(NSURL *)aURL atomically:(BOOL)flag;
// Reading
- (id)initWithContentsOfFile:(NSString *)aPath;
- (id)initWithContentsOfURL:(NSURL *)aURL;