Когда я реализую протокол NSCoding в Objective-C, я хотел бы использовать NSStringFromSelector(@selector(name))
для получения ключевого пути свойства, например ниже
- (void)encodeWithCoder:(NSCoder *)aCoder {
[aCoder encodeObject:self.accountName forKey:NSStringFromSelector(@selector(accountName))];
[aCoder encodeObject:self.userId forKey:NSStringFromSelector(@selector(userId))];
}
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super init];
if (self) {
_accountName = [aDecoder decodeObjectForKey:forKey:NSStringFromSelector(@selector(accountName))];
_userId = [aDecoder decodeObjectForKey:forKey:NSStringFromSelector(@selector(userId))];
}
return self;
}
Мне нравится этот путь, потому что он предотвращает опечатки без необходимости определять множество строковых констант, и я получу предупреждения, если бы переименовал эти свойства. Но я не мог найти способ сделать это в Swift, любые идеи?