Я пытаюсь подключить проект iOS, закодированный в Swift, к экземпляру Watson Assistant, который я уже создал. Проблема в том, что я не могу обойти ошибку «Тип закрытия контекста» при компиляции.
Я относительно новичок в Swift, и мне еще предстоит найти решение.
Ошибка возникает в блоке кода, предоставленном самими IBM (вот ссылка: https://console.bluemix.net/docs/swift/machine_learning/conversation.html#before-you-begin). Одна вещь, которую я смог найти, это то, что это, вероятно, результат обновления до Swift 4. Ниже приведена функция это порождает ошибку, точнее, это выражение «response in» после третьего комментария.
func assistantExample() {
// Assistant credentials
let username = "shawn.soneja85@gmail.com"
let password = "Shawn8135!"
let workspace = "199b1f99-b28c-4b3f-b610-5933328141d5"
// instantiate service
let assistant = Assistant(username: username, password: password, version: "2018-03-01")
// start a conversation
assistant.message(workspaceID: workspace) { response in
print("Conversation ID: \(response.context.conversationID!)")
print("Response: \(response.output.text.joined())")
// continue assistant
print("Request: turn the radio on")
let input = InputData(text: "turn the radio on")
let request = MessageRequest(input: input, context: response.context)
assistant.message(workspaceID: workspace, request: request) { response in
print("Response: \(response.output.text.joined())")
}
}
}
Вот сама ошибка:
Контекстный тип замыкания '(RestResponse ?, WatsonError?) -> Void' (aka '(Необязательно>, Необязательный) -> ()') ожидает 2 аргумента, но 1 использовался в теле замыкания
Обновление:
Я попытался заменить «ответ» на «(ответ, ошибка)», но это приводит к следующим сообщениям об ошибках:
Значение типа 'RestResponse?' не имеет члена 'context'
Значение типа 'RestResponse?' не имеет члена 'output'
И с «(ошибка, ответ)», это приводит к следующей ошибке:
Значение типа 'WatsonError?' (он же необязательный) не имеет члена output
Значение типа 'WatsonError?' (он же «Необязательный») не имеет члена «context»
Вот документация по функции .message:
первый скриншот
второй скриншот
Заранее спасибо за помощь!