Я пытаюсь использовать библиотеку 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 :)'"
Я даже проверил исходный код библиотеки, чтобы проверить, были ли опубликованы протоколы c
/// 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 - 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")
}
}