Все не так с Codable

Привет, Хабр! На связи Кристиан Бенуа, iOS-разработчиĸ в Т-Банĸе. Быстродействие мобильных приложений — один из критериев, влияющих на успех не только приложения, но и всего бизнеса. Особое внимание должно уделяться производительности кода в стандартной библиотеке языка, так как этот код используется почти во всех приложениях, которые написаны на этом языке. Расскажу, как мы сделали pull request в swift-foundation и внесли несколько оптимизаций в JSONDecoder / JSONEncoder , ускорив сериализацию и десериализацию в два раза. В конце обсудим, как получить эту оптимизацию без ограничений по версии iOS и насколько можно ускорить работу с JSON в приложении.

https://habr.com/ru/companies/tbank/articles/977694/

#ios #swift #codable #json

Все не так с Codable

Привет, Хабр! На связи Кристиан Бенуа, iOS-разработчиĸ в Т-Банĸе. Быстродействие мобильных приложений — один из критериев, влияющих на успех не только приложения, но и всего бизнеса. Проводилось...

Хабр
Les cartes Arduino

Une carte Arduino est une solution électronique pas cher nous permettant de créer, programmer et concevoir facilement nos prototypes et nos robots.

Electro-Robot
My CodableWrappers library was featured on this month’s Swift.org community showcase! https://www.swift.org/packages/showcase.html check it out here if you’re looking to improve Codable ergonomics 🤓: https://swiftpackageindex.com/GottaGetSwifty/CodableWrappers #swiftlang #swift #codablewrappers #oss #github #iosdeveloper #codable
Swift.org

Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns.

Swift.org

Groc 3 xAI в разработке iOS приложения «Страны Мира» (отображение границ)

В предыдущей статье я писала о создании довольно простого тестовое iOS приложение Countries, которое показывает все страны Мира по регионам (Европа, Азия, Латинская Америка и т.д.) и для каждой страны её название и флаг. Если вы выбираете какую-то страну, то о ней сообщается дополнительная информация о численности населения population и размере ВВП (валового внутреннего продукта) gdp. Я хочу добавить на карту границы страны. На данный момент я ничего не знаю о том, где взять информацию о границах стран, но это должен быть либо JSON файл, либо JSON информация из интернета, которую можно считать с помощью async / await и декодировать в Swift. Я хочу обратиться к Groc 3 xAI и попросить его написать для меня Swift код, который бы добавил границы выбранной страны на карту. Забегая вперед, скажу, что Groc 3 xAI практически полностью справился со всеми моими запросами, предложив совершенно неожиданное для меня решение со встроенным в MapKit декодером MKGeoJSONDecoder. Тем не менее я попросила Groc 3 создать Codable Модель в Swift для декодирования GeoJSON данных, и он с ней превосходно справился. По ходу дела Groc 3 вообще выдал целый "Комплексный обзор о получении GeoJSON данных стран" и предоставил очень четкие "рассуждения", которые вполне можно использовать как отличный обучающий материал.

https://habr.com/ru/articles/887094/

#Groc_3 #ии #ios_разработка_swift #Groc #ai #map #codable #JSONDEcoder

Groc 3 xAI в разработке iOS приложения «Страны Мира» (отображение границ)

В предыдущей статье я писала о создании с помощью различных ИИ довольно простого тестовое iOS приложение Countries ("Страны Мира"), которое показывает все страны Мира по регионам (Европа, Азия,...

Хабр

Today I am reminded, once again, that #Codable is a terrible #SwiftLang API that should be excised from the language with extreme prejudice.

It's a shame that Swift 6 is already "done”; it would've been the perfect time to do it.

#Swift #Codable

I confess

I have gotten by in my Swift career with having written very few custom Codables

I was writing one today and it mostly went OK

But there is a language/API wart when iterating over children of an unkeyed container

I got to this part of the API and I went “WTF, who does it like that”

Shouldn’t it be like a Sequence or something, so I could do “for nestedContainer in container” or something like that

Parsing JSON Data is a fundamental in modern SwiftUI apps. This comprehensive guide covers all the aspects of the Codable protocols in Swift.

#JSON #Programming #Swift #SwiftUI #macOS #iOS #visionOS #Codable
https://matteomanferdini.com/swift-parse-json/

The privileges & challenges of being a primitive type for Codable in Swift – Wade Tregaskis

And now a simple but pretty thorough implementation of an Encoder with tests. (Although still more of a toy / somewhere to start than something anyone should use.)

- https://www.whynotestflight.com/excuses/and-what-can-i-make-a-custom-encoder-do/

- https://github.com/carlynorama/CoderExplorer/

It goes on forever. As I say in the summary 1578 lines down: "Encoders. Not so fiddly if one can be ruthless in vetting the input. Interminable to write if trying to be general purpose. "

And this one isn't even configurable!

#Codable, #Encoder, #SwiftLang

And what can I make a custom Encoder do?

A list of distractions

Continuing on with that WebExtension, but with a detour in custom Encoders

https://www.whynotestflight.com/excuses/how-do-custom-encoders-work/

Found the best thing for it was copying and making crazy graphs of some existing encoders in the Apple/GitHub repos. Here's 4

I found the comparison between the two different JSONEncoder implementations particularly interesting.

#Codable, #Encoder, #SwiftLang, #JSON, #JSONEncoder, #URIEncoder

How do custom Encoder's work?

A list of distractions