У меня есть класс, в котором есть эти два ивара:
@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]: предупреждение: NSKeyedArchiver освобожден
не имея -finishEncoding
призвал его.
Как мне заставить NSNetService
работать с NSCoding?