简体   繁体   English

失败的初始化器无法满足非失败的初始化器要求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM