私はこれら2つのivarを持つクラスを持っています:
@interface UserData : NSObject <NSCoding> {
NSString *name;
NSNetService *service;
}
最終的にこれを NSData オブジェクトにエンコードしたかったので、NSCoding を実装しました。
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super init])) {
name = [[aDecoder decodeObjectForKey:@"name"] copy];
service = [[aDecoder decodeObjectForKey:@"service"] copy];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:name forKey:@"name"];
[aCoder encodeObject:service forKey:@"service"];
}
ただし、使用しようとするarchivedDataWithRootObject
とエラーが発生します。
-[NSNetService encodeWithCoder:]: 認識されないセレクターがインスタンス 0x100170c40 に送信されました
- キー入力の処理中に例外が検出されました。-[NSNetService encodeWithCoder:]: 認識されないセレクターがインスタンス 0x100170c40 に送信されました
- * -[NSKeyedArchiver dealloc]: 警告: -finishEncoding を呼び出さずに NSKeyedArchiver が割り当て解除されました。
NSNetService
NSCoding を使用するにはどうすればよいですか?