Pull to refresh

Comments 18

UFO just landed and posted this here
Зачем использовать дополнительный parser, если Codable автоматически сам распарсит все поля? Если надо добавить еще поля в модель, то это делается одной строкой, добавляете поле и все, не вижу никаких проблем. Codable для того и существует, чтобы не писать лишний код
UFO just landed and posted this here
Сложно понять, что вы хотите добиться, если вам нужен JSON, то вы его получите после сетевого запроса и можете делать с ним что хотите, можете оставить так и хранить, например, если же вам нужны данные из JSON, то Decodable распарсит.
UFO just landed and posted this here
Вопрос в количестве телодвижений. Лично у меня не получилось, например, красиво и с минимальным вмешательством в код создать нормальный сетевой движок для сервера, с которым я работаю. AlamofireObjectMapper сильно помог, и сильно сократил количество кода. Codable — это определенно шаг вперед, но это не панацея, к сожалению, и сторонние либы все равно мощнее, иногда ощутимо. Не нужно изобретать велосипед, изобретенный до вас, Codable поможет в легких случаях, но полноценное сложное сетевое ядро на нем особо не напишешь (или придется потратить больше времени и строк кода, чем хотелось бы). На мой взгляд, конечно.
Codable безусловно не панацея, и можно использовать сторонние библиотеки, к сожалению AlamofireObjectMapper не использовал, пробовал только SwiftyJSON, но в итоге больше понравился Decodable и у меня весь проект сделан на нем, более 50 APIшек со структурами данных разной сложности, без проблем. Но, зная Alamofire, думаю у них тоже достойный продукт.
ObjectMapper, насколько я знаю, писал другой специалист, не разработчики Alamofire, но могу ошибаться. Если сравнивать SwiftyJSON с Codable, то я с вами соглашусь, они очень близки по функционалу. Попробуйте AlamofireObjectMapper, думаю, в будущем он поможет вам сократить количество времени и кода на сетевое ядро. Мне понравилось, во всяком случае. SwiftyJSON/Codable не подошли конкретному к моему проекту, специфический сервер. А так — лишь бы нравилось, если конкретное решение вам подошло — это замечательно.
UFO just landed and posted this here
Спасибо за статью!
Пора тоже переходить со SwiftyJSON на Codable.
В примере с nested-контейнером, я так понимаю, ошибка. Верно будет так:
self.votesCount = try? ratingsContainer.decode(Int.self, forKey: .votesCount)
self.averageRating = try? ratingsContainer.decode(Double.self, forKey: .averageRating)
Да, конечно, там ratingsContainer, поправил, спасибо! )
Кстати, не поленился и посмотрел в плейграунде. Там еще несколько ошибок. Рекомендую всё же потестить код и внести исправления.
Это String, а не Double и Int:
«average»: «4.1034»,
«votes_count»: «29»

Ключи не совпадают:
«average_rating» и «average»
Благодарю за такую подробную статью.
А что насчет производительности по сравнению со SwiftyJSON? Находил сравнения с Manual, но не с вышеупомянутой библиотекой. Есть ли критичная разница при работе с большими объемами данных?
Спасибо! Сам не сравнивал, но находил информацию на эту тему, вот сравнительная таблица:



и проект на гитхабе: github.com/bwhiteley/JSONShootout
Sign up to leave a comment.

Articles