I am new to swift and see that I have a problem with initwithcoder in swift.
I have a UserItem class, I need to save it the user login.
in object c is like this
- (id)initWithCoder:(NSCoder *)decoder{
if (self = [super init]){
self.username = [decoder decodeObjectForKey:@"username"];
}
return self;
}
and in swift I try so hard
override init() {
super.init()
}
required init(coder decoder: NSCoder!) {
self.username = (decoder.decodeObjectForKey("username")?.stringValue)!
super.init(coder: decoder)
}
but if, for example, above, I get an error in the code
super.init(coder: decoder)
the error message is an “optional encoder” argument when called
I can no longer understand, so I'm trying to use this code,
convenience init(decoder: NSCoder) {
self.init()
self.username = (decoder.decodeObjectForKey("username")?.stringValue)!
}
but get an error
.UserItem initWithCoder:]: unrecognized selector sent to instance 0x7fd4714ce010
what should I do? Thanks first for your help.
source
share