Ios “协议类型“”无法实例化”错误

Ios “协议类型“”无法实例化”错误,ios,swift,protocols,Ios,Swift,Protocols,这是问题的延伸: 有人建议使用协议代替类作为函数。尝试协议方法后,出现无法实例化错误协议类型“JSONObject”。感谢您对修复此错误的任何帮助。协议如下: protocol JSONObject: class, NSObjectProtocol { init(resultsDictionary: [String:Any]) } extension JSONObject { static func updateResultsDictionary(urlExtension: St

这是问题的延伸:

有人建议使用协议代替类作为函数。尝试协议方法后,出现无法实例化错误协议类型“JSONObject”。感谢您对修复此错误的任何帮助。协议如下:

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表示类型,而不是协议

这里有一个教程,可以帮助你设计网络架构