协议扩展,不符合协议,SwiftQueue库

时间:2020-01-07 22:27:35

标签: ios swift extension-methods swift-protocols

我正在尝试使用SwiftQueue库。问题是Xcode说:

类型“ BackgroundJobCreator”不符合协议“ JobCreator”

我简化了课堂,并尽可能简化了查找问题的过程。

class BackgroundJobCreator: JobCreator {

  func create(type: String, params: [String : Any]?)->Job {
      return BackgroundUploadService(params: params)
  }
}

当我说“是”时,Xcode会询问“是否要添加协议子”。

func create(type: String, params: [String : Any]?) -> Job {
    [code]
}

第二个我删除了旧函数,再次出现错误,表明我不符合协议'JobCreator'。生成的一个完全不动。 (我也不能有两个,因为它会引发“'create(type:params :)'的无效重新声明”“

我什至检查了库的源代码以检查协议是否公开

/// Protocol to create instance of your job
public protocol JobCreator {

/// method called when a job has be to instantiate
/// Type as specified in JobBuilder.init(type) and params as JobBuilder.with(params)
func create(type: String, params: [String: Any]?) -> Job

}

SwiftQueue Protocols - Github

自动生成的协议是否错误?那么这肯定是Swift编译器的错误(或任何检查此问题的东西)吗?几个月前,我在GitHub上提出了这个问题,但是我觉得这可能是我一个孤立的问题。

编辑:这是运行的最少代码请求。

import Foundation
import SwiftQueue

class BackgroundJobCreator: JobCreator {

func create(type: String, params: [String : Any]?)->Job {
      return BackgroundUploadService(params: params)
   }
}

-

import Foundation
import SwiftQueue

class BackgroundUploadService: Job{

  static let type = ""
  private var params: [String: Any]?

  required init(params: [String: Any]?) {
      // Receive params from JobBuilder.with()
      self.params = params
  }

  required convenience init(from decoder: Decoder) throws {
      fatalError("init(from:) has not been implemented")
  }
}

0 个答案:

没有答案
相关问题