Расширение протокола, не соответствует протоколу, библиотека SwiftQueue - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь использовать библиотеку 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")
  }
}
...