Ios “协议类型“”无法实例化”错误
这是问题的延伸: 有人建议使用协议代替类作为函数。尝试协议方法后,出现无法实例化错误协议类型“JSONObject”。感谢您对修复此错误的任何帮助。协议如下:Ios “协议类型“”无法实例化”错误,ios,swift,protocols,Ios,Swift,Protocols,这是问题的延伸: 有人建议使用协议代替类作为函数。尝试协议方法后,出现无法实例化错误协议类型“JSONObject”。感谢您对修复此错误的任何帮助。协议如下: protocol JSONObject: class, NSObjectProtocol { init(resultsDictionary: [String:Any]) } extension JSONObject { static func updateResultsDictionary(urlExtension: St
protocol JSONObject: class, NSObjectProtocol {
init(resultsDictionary: [String:Any])
}
extension JSONObject {
static func updateResultsDictionary(urlExtension: String, completion:
@escaping (JSONObject?) -> Void) {
let nm = NetworkManager.sharedManager
_ = nm.getJSONData(urlExtension: urlExtension) {data in
guard let jsonDictionary = nm.parseJSONFromData(data),
let resultDictionaries = jsonDictionary["result"] as? [[String : Any]] else {
completion(nil)
return
}
for resultsDictionary in resultDictionaries {
let jsonInfo = JSONObject(resultsDictionary: resultsDictionary)// Error haapens here
completion(jsonInfo)
}
}
}
}
像这样使用Self:
static func updateResultsDictionary(urlExtension: String, completion:
@escaping (Self?) -> Void) {
let jsonInfo = self.init(resultsDictionary: [:])
completion(jsonInfo)
}
因为您不能初始化某些协议,但可以初始化符合该协议的类型
Self表示类型,而不是协议
这里有一个教程,可以帮助你设计网络架构