Я начинаю использовать инфраструктуру Kitura для переноса моего текущего бэкэнда node.js на swift, и я начинаю с реализации всех маршрутов с фиктивными данными.
В любом случае, сейчас я на очень ранней стадии и начал разрабатывать некоторые фиктивные конечные точки и без проблем развертывать их в IBM Cloud, они работают отлично. Одним из примеров рабочей конечной точки является следующее:
app.router.post("/getStats") { (request, response, next) in
let mocks = Mocks()
response.send(json: mocks.dashboard)
next()
}
Mocks() — это класс, который содержит структуру dashboard со всеми предопределенными полями. Эти поля представляют собой простые типы (строки и числа).
Когда я начал разрабатывать более расширенную конечную точку, рабочий процесс остался прежним, я зарегистрировал маршрут с помощью следующего кода.
app.router.post("/generateTest") { (request, response, next) in
let mocks = Mocks()
response.send(json: mocks.getTest())
next()
}
Вместо структуры Codable с простыми типами эта фиктивная структура будет иметь вложенные кодируемые структуры:
struct Test: Codable {
var totalTime: Int
var questions: [Question]
}
extension Test {
struct Question: Codable {
let id: String?
let pregunta: String
var selectedAnswer: Answer? = nil
let respuestas: [Answer]
let idConcepto: Int
let stats: Stats?
let categorias: [String]
}
struct Answer: Codable {
let respuesta: String
let correcta: Bool
}
struct Stats: Codable {
let globalStats: GlobalStats?
}
struct GlobalStats: Codable {
let timesFailed, timesUnanswered, timesAnswered: Int?
}
}
Все работает нормально, когда я создаю проект на локальном хосте. Когда я перемещаюсь по этим конечным точкам в Postman, они возвращают мне ожидаемый ответ.
Проблема возникает, когда я пытаюсь развернуть это в IBM Cloud (также пробовал на Heroku с той же проблемой).
Проблема, которую он дает мне, заключается в следующем
/tmp/app/Sources/Application/Mocks/UserMock.swift:29:44: error: type of expression is ambiguous without more context
let questionFirst: Test.Question = Test.Question(id: "1", pregunta: "UNO", respuestas: answers, idConcepto: 1, stats: nil, categorias: cats)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Я не знаю, как это решить, Xcode не вызвал никаких ошибок и скомпилировал проект локально без каких-либо проблем, я пытался привести типы и все возможные комбинации для создания структуры, ошибка всегда одна и та же.
Кто-нибудь сталкивался с такой же проблемой? Это ошибка Китуры или я что-то упустил? В документации ничего не сказано о вложенных структурах, единственное, что я нашел относительно вложенных структур, это то, что Kitura ORM не поддерживает вложенные структуры при работе с базой данных ORM и SQL, что не является моим случаем.
Буду очень рад, если мы найдем решение
Спасибо за вашу помощь