gpt4 book ai didi

ios - "Protocol type ' ' cannot be instantiated"错误

转载 作者:行者123 更新时间:2023-11-28 15:56:37 25 4
gpt4 key购买 nike

这是问题的扩展:creating-a-function-on-a-parent-class-that-can-be-accessible-to-all-its-children

有人建议使用协议(protocol)而不是为函数使用类会更好。尝试协议(protocol)方法后,发生错误“无法实例化协议(protocol)类型‘JSONObject’”。感谢您提供修复此错误的任何帮助。这是协议(protocol):

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)

}

因为你不能初始化一些protocol,但是你可以初始化符合protocolType

Self 是指 Type 而不是 protocol

这是一个关于 Protocol-Oriented Programming in Networking 的教程这将帮助您设计网络架构。

关于ios - "Protocol type ' ' cannot be instantiated"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41646070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com