我有这个结构,我希望它的init
为failable
,因为我传递的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?')来满足
为什么我的结构无法获得?即使是协议初始化,我是否应该声明可用?
答案 0 :(得分:0)
也许您的Interface
就像:
protocol Interface {
init(json: JSON)
}
但是您的AdminModel的初始化为init?(json: JSON)
,因此您应保持一致:
protocol Interface {
init?(json: JSON)
}