小编Dia*_*git的帖子

如何在Swift中编写initwithcoder代码?

我是swift adn中的新手,我在swift中遇到initwithcoder的问题.

我有类UserItem,我需要它来保存用户登录.

在目标c中是这样的

 - (id)initWithCoder:(NSCoder *)decoder{
    if (self = [super init]){
        self.username = [decoder decodeObjectForKey:@"username"];
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

而且很快我就是这样想的

override init() {
   super.init()
}    

required init(coder decoder: NSCoder!) {

   self.username = (decoder.decodeObjectForKey("username")?.stringValue)!

   super.init(coder: decoder)
}
Run Code Online (Sandbox Code Playgroud)

但如果像上面那样,我得到代码错误

super.init(coder: decoder)
Run Code Online (Sandbox Code Playgroud)

错误消息是"额外参数'编码器'在通话中

我不知道了,所以我试试这个代码,

convenience init(decoder: NSCoder) {
   self.init()

   self.username = (decoder.decodeObjectForKey("username")?.stringValue)!
}
Run Code Online (Sandbox Code Playgroud)

但是,得到错误

.UserItem initWithCoder:]: unrecognized selector sent to instance 0x7fd4714ce010
Run Code Online (Sandbox Code Playgroud)

我该怎么办?谢谢你的帮助.

initwithcoder swift

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

initwithcoder ×1

swift ×1