Если бы у меня был:
import Moya
import RxSwift
import ObjectMapper
import Moya_ObjectMapper
provider.request(.callApi(id: id))
.mapObject(Thing.self)
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .background))
.observeOn(MainScheduler.instance)
...
struct Thing: Mappable, Equatable {
var id: String?
init?(map: Map) {
}
mutating func mapping(map: Map) {
id <- map["id"]
}
Выполнение вызова http API и получение обратно json, например {"id: "123"}, и все отлично работает. Создается новая структура Thing с правильным идентификатором. Но что, если я хочу добавить «изюминку» к Thing и жесткому коду {"id: "123", "flavor": "что-то"}.
то есть давайте просто изменим фактическое тело ответа http и добавим "flavor": "something"
, прежде чем он попадет в метод .mapObject. Где правильное место, чтобы воспользоваться этим?
И это не просто добавление его в функцию сопоставления в Thing, потому что «что-то» отличается для каждого идентификатора. Может быть вкус: «что-то 1», а затем вкус: «что-то 2». У меня есть это значение в той же области, что и callApi(id: id), поэтому что-то вроде:
provider.request(.callApi(id: id))
.addJSON("flavor", flavor)
.mapObject(Thing.self)
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .background))
.observeOn(MainScheduler.instance)
Но .addJSON
это то, что я только что придумал. Его не существует. Но для этого должно быть какое-то простое решение?