[英]Non-failable initializer requirement cannot be satisfied by failable initializer
I have this struct and I want its init
to be failable
because something could go wrong with the JSON dictionary I pass: 我有这个结构,我希望它的
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
}
}
} }
There's no issue until I add ?
在我添加之前没有问题
?
after init to make init failable
: at that point XCode complains: 在初始化之后使初始化
failable
:那时XCode抱怨:
Non-failable initializer requirement 'init(json:)' cannot be satisfied by failable initializer ('init?')
失败的初始化器('init?')无法满足非失败的初始化器要求'init(json :)'
Why my struct can't be failable? 为什么我的结构不能失效? Should I declare failable even the protocol init?
我应该宣布协议初始化失败吗?
Maybe your Interface
is like: 也许您的
Interface
就像:
protocol Interface {
init(json: JSON)
}
but your AdminModel's init is init?(json: JSON)
, so you should keep consistent: 但是您的AdminModel的init是
init?(json: JSON)
,因此您应该保持一致:
protocol Interface {
init?(json: JSON)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.