可用的初始化程序无法满足不可用的初始化程序要求

时间:2017-07-28 12:34:31

标签: swift struct failable

我有这个结构,我希望它的initfailable,因为我传递的JSON字典可能出错:

struct AdminModel:Interface{

var status:Any = ""
var l:String = ""
var p:String = ""
var url:String = ""

init?(json:NSDictionary){

    if let status = json["status"] as? Any,
       let l = json["l"] as? String,
       let p = json["p"] as? String,
       let url = json["url"] as? String
    {
        self.status = status
        self.l = l
        self.p = p
        self.url = url
    }else{
        return nil
    }
}

}

在我在init之后添加?以生成初始化failable之前没有问题:此时XCode抱怨:

  

不可用的初始化程序要求'init(json :)'不能通过可用的初始化程序('init?')来满足

为什么我的结构无法获得?即使是协议初始化,我是否应该声明可用?

1 个答案:

答案 0 :(得分:0)

也许您的Interface就像:

protocol Interface {
   init(json: JSON)
}

但是您的AdminModel的初始化为init?(json: JSON),因此您应保持一致:

protocol Interface {
   init?(json: JSON)
}