Комментарии 5
Звучит интересно, надо попробовать :)
Такой вопрос интересует: если статусы ошибок реализованы не через статусы HTTP, а через специальное поле в json-ответе, как такие ошибки можно обрабатывать? Я так понимаю, в сгенерированный код методов лучше не лезть (имена переменных вроде outputResult237Address_components238 как бы намекают нам на это)?
Такой вопрос интересует: если статусы ошибок реализованы не через статусы HTTP, а через специальное поле в json-ответе, как такие ошибки можно обрабатывать? Я так понимаю, в сгенерированный код методов лучше не лезть (имена переменных вроде outputResult237Address_components238 как бы намекают нам на это)?
Предположим, что в случае успеха сервер возвращает json-структуру по ключу result, а в случае внутренней, семантической ошибки — error. В таком случае имеет смысл описать в IDL результат работы удалённого метода так:
После завершения вызова сгенерированный код извлечёт из ответа те структуры, которые там есть, и не проинициализирует те, данные для которых не пришли. Они останутся nil. То есть после вызова достаточно будет убедиться, что структура error не nil, чтобы получить информацию об ошибке. Кстати, этот момент описан в примере, прилагающемся к коду в репозитории.
...
"response": {
"result": { ... },
"error": { ... }
}
После завершения вызова сгенерированный код извлечёт из ответа те структуры, которые там есть, и не проинициализирует те, данные для которых не пришли. Они останутся nil. То есть после вызова достаточно будет убедиться, что структура error не nil, чтобы получить информацию об ошибке. Кстати, этот момент описан в примере, прилагающемся к коду в репозитории.
Это в общем-то понятно, хотелось бы, чтобы метод placeDetailsWithKey записывал таккую ошибку в (NSError* )error.
Бедный ёжинька на картинке :(
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Игра в прятки: кодогенерация против JSON