我正在尝试使用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
}
自动生成的协议是否错误?那么这肯定是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")
}
}