2

私はこれら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 が割り当て解除されました。

NSNetServiceNSCoding を使用するにはどうすればよいですか?

4

0 に答える 0