Thomas Asheim SmedmannDriving SwiftUI navigation with a ViewModel hierarchyLet your SwiftUI navigation and View hierarchy be driven by a changing — but connected — ViewModel hierarchy.Jul 271Jul 271
Thomas Asheim SmedmannRepresenting arbitrary data (e.g JSON) as a custom and opaque Codable typeRepresent arbitrary data (e.g JSON) using a custom and opaque Codable type consisting of a hierarchy of primitive data values and nested…Jul 14Jul 14
Thomas Asheim SmedmannSwiftUI navigation with Coordinator Views and Action emitting ViewModelsTwo rules introducing Coordinator Views and Action emitting ViewModelsJun 251Jun 251
Thomas Asheim SmedmannReal-time with WebSockets and Swift ConcurrencySending and receiving real-time messages over a generic WebSocket connection using AsyncStream and Swift ConcurrencyFeb 25Feb 25
Thomas Asheim SmedmannConcurrent and thread safe data cache with Swift ConcurrencySome examples on how to build a concurrent and thread safe data/resource cache using Swift Concurrency primitivesFeb 24Feb 24
Thomas Asheim SmedmannCore Bluetooth and the BLE stackAn introduction to BLE (Bluetooth Low Energy), and how it powers the Core Bluetooth Framework.Feb 9Feb 9
Thomas Asheim SmedmannRender HTML in SwiftUIRender HTML in SwiftUI using NSAttributedString, UITextView and UIViewRepresentable.Jul 11, 2023Jul 11, 2023
Thomas Asheim SmedmannDynamically alternate/change app iconA simple example on how to dynamically alternate/change the app icon of your appJul 9, 2023Jul 9, 2023
Thomas Asheim SmedmannKeyboard Avoidance View ControllerA simple base UIViewController that automatically makes growing content scrollable, and ensures that content is never obscured by the…Apr 22, 2023Apr 22, 2023
Thomas Asheim SmedmannDetect and utilise consecutive taps on a TabView tabA quick loot at how to detect and utilise consecutive taps on a TabView tab.Aug 29, 2022Aug 29, 2022