41554 blogs · [ { "id": "01a0bbc8-6378-7268-a5d1-331cd18bb6d0", "title": "SwiftUI Week Calendar View. #3: Provider", "url": "https://livsycode.com/swiftui/swiftui-week-calendar-view-3-provider/", "published_at": "2024-08-20T08:32:52+00:00" }, { "id": "01a0bbc8-6378-7268-a5d1-331cd1956a85", "title": "SwiftUI Week Calendar View. #2: Models", "url": "https://livsycode.com/swiftui/swiftui-week-calendar-view-2-models/", "published_at": "2024-08-20T07:57:21+00:00" }, { "id": "01a0bbc8-6378-7268-a5d1-331cd1d6c726", "title": "SwiftUI Week Calendar View. #1: Introduction", "url": "https://livsycode.com/swiftui/swiftui-week-calendar-view-1-introduction/", "published_at": "2024-08-20T07:13:12+00:00" }, { "id": "01a0bbc8-6378-7268-a5d1-331cd2200e43", "title": "OptionSet vs Enum", "url": "https://livsycode.com/best-practices/optionset-vs-enum/", "published_at": "2024-08-15T11:04:11+00:00" }, { "id": "01a0bbc8-6378-7268-a5d1-331cd30add62", "title": "Binding vs Bindable vs State", "url": "https://livsycode.com/swiftui/binding-vs-bindable-vs-state/", "published_at": "2024-08-13T07:48:31+00:00" }, { "id": "01a0bbc8-6378-7268-a5d1-331cd3cdfe33", "title": "Pretty printed JSON Data", "url": "https://livsycode.com/best-practices/pretty-printed-json-data/", "published_at": "2024-08-11T08:15:30+00:00" }, { "id": "01a0bbc8-6378-7268-a5d1-331cd45062dd", "title": "How to create a binding to an environment object in SwiftUI", "url": "https://livsycode.com/swiftui/how-to-create-a-binding-to-a-property-of-an-environment-object-in-swiftui/", "published_at": "2024-08-11T06:45:22+00:00" }, { "id": "01a0bbc8-6378-7268-a5d1-331cd4f52696", "title": "How to track changes in an Observable class outside of SwiftUI views", "url": "https://livsycode.com/swiftui/how-to-track-changes-in-an-observable-class-outside-of-swiftui-views/", "published_at": "2024-08-10T18:17:30+00:00" }, { "id": "01a0bbcc-d75c-73e9-9b7a-4cd132ed9f91", "title": "Dealing with measurement units in Swift", "url": "https://livsycode.com/swift/dealing-with-measurement-units-in-swift/", "published_at": "2024-08-09T14:42:58+00:00" }, { "id": "01a0bbcc-d75c-73e9-9b7a-4cd1338f0c85", "title": "How to create mock arrays with Array(repeating:count:)", "url": "https://livsycode.com/swift/how-to-create-mock-arrays-with-arrayrepeatingcount/", "published_at": "2024-08-08T15:42:02+00:00" }, { "id": "01a0bbcc-d75c-73e9-9b7a-4cd1343bc89e", "title": "Optimizing execution speed with CollectionOfOne in Swift", "url": "https://livsycode.com/best-practices/optimizing-execution-speed-with-collectionofone-in-swift/", "published_at": "2024-08-08T14:24:42+00:00" }, { "id": "01a0bbcc-d75c-73e9-9b7a-4cd134c1f3b8", "title": "Consume operator in Swift", "url": "https://livsycode.com/best-practices/how-to-use-consume-operator/", "published_at": "2024-08-07T16:53:40+00:00" }, { "id": "01a0bbcc-d75c-73e9-9b7a-4cd134f005f3", "title": "Blur transition animation with blurReplace in SwiftUI", "url": "https://livsycode.com/swiftui/blur-transition-animation-with-blurreplace-in-swiftui/", "published_at": "2024-08-06T10:09:52+00:00" }, { "id": "01a0bbcc-d75c-73e9-9b7a-4cd13506e57b", "title": "Detect when your app is sent to the background or foreground in SwiftUI", "url": "https://livsycode.com/swiftui/detect-when-our-app-is-sent-to-the-background-or-foreground-in-swiftui/", "published_at": "2024-08-05T08:53:17+00:00" }, { "id": "01a0bbcc-d75d-70f4-aa52-17302447669a", "title": "Detect when your app is sent to the background in UIKit", "url": "https://livsycode.com/uikit/detect-when-our-app-is-sent-to-the-background-in-swift-and-uikit/", "published_at": "2024-08-05T08:39:20+00:00" }, { "id": "01a0bbcc-d75d-70f4-aa52-1730253eb725", "title": "Progress Bar with image pattern mask in SwiftUI", "url": "https://livsycode.com/swiftui/progress-bar-with-image-pattern-mask-in-swiftui/", "published_at": "2024-08-04T13:19:44+00:00" }, { "id": "01a0bbcc-d75d-70f4-aa52-173025ab0b3a", "title": "How to create pattern with image in SwiftUI and UIKit", "url": "https://livsycode.com/swiftui/how-to-create-pattern-with-image-in-swiftui-and-uikit/", "published_at": "2024-08-04T12:51:40+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e535cf7c", "title": "Type ‘()’ cannot conform to ‘View’ or how to use print() inside SwiftUI View", "url": "https://livsycode.com/swiftui/type-cannot-conform-to-view-or-how-to-use-print-inside-swiftui-view/", "published_at": "2024-08-04T12:21:58+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e5f8addd", "title": "The right way to compare strings in Swift", "url": "https://livsycode.com/best-practices/the-right-way-to-compare-strings-in-swift/", "published_at": "2024-08-02T05:56:02+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e63d2dd9", "title": "How to schedule local notifications for weekdays and timestamps", "url": "https://livsycode.com/swift/how-to-schedule-local-notifications-for-weekdays-and-time-points/", "published_at": "2024-08-01T11:45:48+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e722043c", "title": "How to check Internet connection in Swift", "url": "https://livsycode.com/swift/how-to-check-internet-connection-in-swift/", "published_at": "2024-08-01T09:04:42+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e7767ade", "title": "How to use PersonNameComponents Formatter", "url": "https://livsycode.com/best-practices/how-to-use-personnamecomponentsformatter/", "published_at": "2024-07-30T14:53:31+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e80df86d", "title": "Should we use the weak self with DispatchQueue?", "url": "https://livsycode.com/swift/should-we-use-the-weak-self-with-dispatchqueue-main-async/", "published_at": "2024-07-30T10:51:53+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e8bced49", "title": "Swift Timer and retain cycles", "url": "https://livsycode.com/swift/swift-timer-and-retain-cycles/", "published_at": "2024-07-30T09:38:29+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e98e6ea2", "title": "How to use withoutActuallyEscaping", "url": "https://livsycode.com/swift/how-to-use-withoutactuallyescaping/", "published_at": "2024-07-28T11:00:13+00:00" }, { "id": "01a0bbd1-97ca-7191-9de2-7dc7e9f9c84c", "title": "Atomic properties and collections in Swift", "url": "https://livsycode.com/swift/atomic-properties-and-collections-in-swift/", "published_at": "2024-07-24T14:42:24+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03bfce13be8", "title": "SwiftUI isUserInteractionEnabled alternatives: disabled vs allowsHitTesting", "url": "https://livsycode.com/swift/swiftui-isuserinteractionenabled-alternatives-disabled-vs-allowshittesting/", "published_at": "2024-07-24T09:13:40+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03bfd594a64", "title": "How to implement ChatGPT in Swift", "url": "https://livsycode.com/swift/how-to-implement-chatgpt-in-swift/", "published_at": "2024-07-23T11:48:42+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03bfdeaa085", "title": "How to handle two types of server responses to a single request in Swift", "url": "https://livsycode.com/swift/how-to-handle-two-types-of-server-responses-to-a-single-request-in-swift/", "published_at": "2024-07-22T10:50:28+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03bfeb24cfb", "title": "The Swifty way to swizzle: @_dynamicReplacement", "url": "https://livsycode.com/swift/the-swifty-way-to-swizzle-_dynamicreplacement/", "published_at": "2024-07-18T06:10:27+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03bff9232d9", "title": "Swizzling in Swift with the UIViewController example", "url": "https://livsycode.com/swift/swizzling-in-swift-with-the-uiviewcontroller-example/", "published_at": "2024-07-17T10:24:29+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03c00562037", "title": "How to fix ‘Extensions must not contain stored properties’ error", "url": "https://livsycode.com/swift/how-to-fix-extensions-must-not-contain-stored-properties-error/", "published_at": "2024-07-16T14:39:06+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03c00d157bc", "title": "How to find similar words with an NLEmbedding", "url": "https://livsycode.com/swift/how-to-find-similar-words-with-an-nlembedding/", "published_at": "2024-07-16T13:52:43+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03c015a1900", "title": "Codable Dictionary with enum as key", "url": "https://livsycode.com/swift/codable-dictionary-with-enum-as-key-with-codingkeyrepresentable/", "published_at": "2024-07-16T13:06:55+00:00" }, { "id": "01a0bbd5-88a0-722a-88dc-d03c024e3185", "title": "Swift Dictionary default value", "url": "https://livsycode.com/swift/swift-dictionary-default-value/", "published_at": "2024-07-16T10:43:19+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd5102a293c", "title": "How to create a weak protocol array", "url": "https://livsycode.com/swift/how-to-create-a-weak-protocol-array/", "published_at": "2024-07-14T05:50:37+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd5110efc2b", "title": "The @autoclosure keyword", "url": "https://livsycode.com/swift/the-autoclosure-keyword/", "published_at": "2024-07-08T15:15:57+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd511a81a1c", "title": "FileManager directories: Documents vs Application Support vs tmp vs Caches", "url": "https://livsycode.com/best-practices/filemanager-directories-documents-vs-application-support-vs-tmp-vs-caches/", "published_at": "2024-07-06T15:22:53+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd51272cf77", "title": "How to measure execution speed in Swift", "url": "https://livsycode.com/swift/how-to-measure-execution-speed-in-swift/", "published_at": "2024-07-04T15:40:38+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd51280c3ef", "title": "Failable and throwing initializers", "url": "https://livsycode.com/best-practices/failable-and-throwing-initializers/", "published_at": "2024-07-04T08:00:53+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd513108e4e", "title": "Unowned vs weak. Are there any drastic benefits of using unowned references?", "url": "https://livsycode.com/best-practices/unowned-vs-weak-are-there-any-drastic-benefits-of-using-unowned-references/", "published_at": "2024-06-25T17:14:31+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd513db9f3d", "title": "Subscripts in Swift", "url": "https://livsycode.com/swift/subscripts-in-swift/", "published_at": "2024-06-24T14:02:48+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd5142b5f67", "title": "UserDefaults vs FileManager vs Keychain vs Core Data vs SwiftData", "url": "https://livsycode.com/best-practices/userdefaults-vs-filemanager-vs-keychain-vs-core-data-vs-swiftdata/", "published_at": "2024-06-19T17:16:19+00:00" }, { "id": "01a0bbd9-351e-71ed-98cb-4dd5145e95a9", "title": "How to fix ‘No exact matches in call to initializer’ error in SwiftUI", "url": "https://livsycode.com/swift/how-to-fix-no-exact-matches-in-call-to-initializer-error-in-swiftui/", "published_at": "2024-06-19T05:57:54+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffaac0dd9", "title": "Any vs AnyObject vs any in Swift", "url": "https://livsycode.com/swift/any-vs-anyobject-vs-any-in-swift/", "published_at": "2024-06-17T17:43:39+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffb3ec3a5", "title": "callAsFunction vs @dynamicCallable", "url": "https://livsycode.com/swift/callasfunction-vs-dynamiccallable/", "published_at": "2024-06-17T12:59:56+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffc3d243e", "title": "Dynamic Member Lookup in Swift", "url": "https://livsycode.com/swift/dynamicmemberlookup-in-swift/", "published_at": "2024-06-17T12:47:07+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffc73005c", "title": "The dump() function in Swift", "url": "https://livsycode.com/best-practices/the-dump-function-in-swift/", "published_at": "2024-06-13T15:27:22+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffc86f9b7", "title": "Swift keypaths", "url": "https://livsycode.com/swift/swift-keypaths/", "published_at": "2024-06-12T14:45:45+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffd6ae1ef", "title": "KVO", "url": "https://livsycode.com/uikit/kvo/", "published_at": "2024-06-10T15:01:55+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffdb9a2bc", "title": "KVC", "url": "https://livsycode.com/swift/kvc/", "published_at": "2024-06-10T15:00:50+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffdc1b083", "title": "AsyncStream in Swift", "url": "https://livsycode.com/swift/asyncstream/", "published_at": "2024-06-07T11:50:35+00:00" }, { "id": "01a0bbdc-dda4-724f-8c3b-56cffdebd12c", "title": "Sendable and @Sendable closures in Swift", "url": "https://livsycode.com/swift/sendable-and-sendable-closures-in-swift/", "published_at": "2024-06-06T12:13:59+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b71142d136d", "title": "Global actors in Swift", "url": "https://livsycode.com/swift/global-actors-in-swift/", "published_at": "2024-06-05T10:43:09+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b7114a3ff38", "title": "The nonisolated and the isolated keywords in Swift", "url": "https://livsycode.com/swift/the-nonisolated-and-the-isolated-keywords-in-swift/", "published_at": "2024-06-04T17:23:09+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b7114ba3b0f", "title": "Actor reentrancy", "url": "https://livsycode.com/swift/actor-reentrancy/", "published_at": "2024-06-04T08:01:08+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b71151b0a5e", "title": "Swift Actors", "url": "https://livsycode.com/swift/swift-actors/", "published_at": "2024-06-03T15:22:32+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b71151bf517", "title": "Task.detached in Swift", "url": "https://livsycode.com/swift/task-detached-in-swift/", "published_at": "2024-06-03T15:16:14+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b711572446b", "title": "How to cancel a Task in Swift", "url": "https://livsycode.com/swift/how-to-cancel-a-task-in-swift/", "published_at": "2024-06-03T05:56:43+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b7116596dfc", "title": "Async let in Swift", "url": "https://livsycode.com/swift/async-let-in-swift/", "published_at": "2024-06-02T12:50:28+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b71167a7569", "title": "Tasks in Swift", "url": "https://livsycode.com/swift/tasks-in-swift/", "published_at": "2024-06-02T11:18:32+00:00" }, { "id": "01a0bbe0-49df-73da-a657-4b711763f30a", "title": "Async/await in Swift", "url": "https://livsycode.com/swift/async-await-in-swift/", "published_at": "2024-06-02T05:15:53+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde661027d", "title": "The defer keyword in Swift", "url": "https://livsycode.com/best-practices/the-defer-keyword-in-swift/", "published_at": "2024-06-01T11:02:10+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde70e6107", "title": "The some and the any keywords in Swift", "url": "https://livsycode.com/best-practices/the-some-and-the-any-keywords-in-swift/", "published_at": "2024-05-27T08:18:34+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde715e7a1", "title": "Visitor Design Pattern in Swift", "url": "https://livsycode.com/best-practices/visitor-design-pattern-in-swift/", "published_at": "2024-05-26T09:26:38+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde7915121", "title": "Template Method Design Pattern in Swift", "url": "https://livsycode.com/best-practices/template-method-design-pattern-in-swift/", "published_at": "2024-05-25T17:58:15+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde80b6a52", "title": "Strategy Design Pattern in Swift", "url": "https://livsycode.com/best-practices/strategy-design-pattern-in-swift/", "published_at": "2024-05-25T16:28:47+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde864cd40", "title": "State Design Pattern in Swift", "url": "https://livsycode.com/best-practices/state-design-pattern-in-swift/", "published_at": "2024-05-25T05:42:30+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde8f43aa8", "title": "Observer Design Pattern in Swift", "url": "https://livsycode.com/best-practices/observer-design-pattern-in-swift/", "published_at": "2024-05-24T12:05:07+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde95c2b2d", "title": "Memento Design Pattern in Swift", "url": "https://livsycode.com/best-practices/memento-design-pattern-in-swift/", "published_at": "2024-05-23T17:56:50+00:00" }, { "id": "01a0bbe3-8bb1-705d-9deb-16dde9cb76da", "title": "Mediator Design Pattern in Swift", "url": "https://livsycode.com/best-practices/mediator-design-pattern-in-swift/", "published_at": "2024-05-23T16:47:00+00:00" }, { "id": "01a0bbe6-c9a7-70af-8b4e-7422cd057ffb", "title": "Iterator Design Pattern in Swift", "url": "https://livsycode.com/best-practices/iterator-design-pattern-in-swift/", "published_at": "2024-05-23T08:43:29+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25bb1432b5", "title": "Command Design Pattern in Swift", "url": "https://livsycode.com/best-practices/command-design-pattern-in-swift/", "published_at": "2024-05-22T06:09:53+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25bba110f3", "title": "Chain of Responsibility Design Pattern in Swift", "url": "https://livsycode.com/best-practices/chain-of-responsibility-design-pattern-in-swift/", "published_at": "2024-05-21T16:19:16+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25bbdff822", "title": "Proxy Design Pattern in Swift", "url": "https://livsycode.com/best-practices/proxy-design-pattern-in-swift/", "published_at": "2024-05-21T10:26:47+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25bcba6f46", "title": "FlyWeight Design Pattern in Swift", "url": "https://livsycode.com/best-practices/flyweight-design-pattern-in-swift/", "published_at": "2024-05-21T08:57:54+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25bcd4e337", "title": "Facade Design Pattern in Swift", "url": "https://livsycode.com/best-practices/facade-design-pattern-in-swift/", "published_at": "2024-05-20T17:35:44+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25bd3cc94b", "title": "Decorator Design Pattern in Swift", "url": "https://livsycode.com/best-practices/decorator-design-pattern-in-swift/", "published_at": "2024-05-20T12:20:42+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25be3493b1", "title": "Composite Design Pattern in Swift", "url": "https://livsycode.com/best-practices/composite-design-pattern-in-swift/", "published_at": "2024-05-20T08:35:06+00:00" }, { "id": "01a0bbe6-c9a8-73a6-861c-4b25be9ebac9", "title": "Bridge Design Pattern in Swift", "url": "https://livsycode.com/best-practices/bridge-design-pattern-in-swift/", "published_at": "2024-05-19T17:31:44+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c3044d608318", "title": "Adapter Design Pattern in Swift", "url": "https://livsycode.com/best-practices/adapter-design-pattern-in-swift/", "published_at": "2024-05-19T10:30:16+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c3044e414c6b", "title": "Singleton Design Pattern in Swift", "url": "https://livsycode.com/best-practices/singleton-design-pattern-in-swift/", "published_at": "2024-05-19T07:51:51+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c3044f30652f", "title": "Prototype Design Pattern in Swift", "url": "https://livsycode.com/best-practices/prototype-design-pattern-in-swift/", "published_at": "2024-05-18T07:03:43+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c3044f32db0d", "title": "Builder Design Pattern in Swift", "url": "https://livsycode.com/best-practices/builder-design-pattern-in-swift/", "published_at": "2024-05-18T06:19:58+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c3044ffae9be", "title": "Abstract Factory Design Pattern in Swift", "url": "https://livsycode.com/best-practices/abstract-factory-design-pattern-in-swift/", "published_at": "2024-05-17T18:15:35+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c3045024e6b7", "title": "Factory Method Design Pattern in Swift", "url": "https://livsycode.com/best-practices/factory-method-design-pattern-in-swift/", "published_at": "2024-05-17T13:19:15+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c30450bc5bbd", "title": "Design Patterns: Basics", "url": "https://livsycode.com/best-practices/design-patterns-part-1-basics/", "published_at": "2024-05-16T13:11:21+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c304513e6083", "title": "SwiftUI dark mode, light mode, and system theme", "url": "https://livsycode.com/swiftui/swiftui-theme-dark-mode-light-mode-and-system-theme/", "published_at": "2024-05-11T06:55:52+00:00" }, { "id": "01a0bbea-0018-72dd-8ad0-c30451dd5fa2", "title": "@AppStorage SwiftUI property wrapper", "url": "https://livsycode.com/swiftui/appstorage-swiftui-property-wrapper/", "published_at": "2024-05-10T16:24:26+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefb709691b", "title": "SwiftUI TextEditor with placeholder", "url": "https://livsycode.com/swiftui/swiftui-texteditor-with-placeholder/", "published_at": "2024-05-02T08:58:23+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefb7ccb5bb", "title": "SwiftUI Coordinator. Part 3: Router", "url": "https://livsycode.com/swiftui/swiftui-coordinator-part-3-router/", "published_at": "2024-05-01T05:54:33+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefb845e7ad", "title": "SwiftUI Coordinator. Part 2: MVVM Module", "url": "https://livsycode.com/swiftui/swiftui-coordinator-part-2-first-mvvm-module/", "published_at": "2024-04-30T05:19:18+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefb8a0a7ef", "title": "SwiftUI Coordinator. Part 1: TabView and NavigationStack", "url": "https://livsycode.com/swiftui/swiftui-coordinator-part-1-tabview/", "published_at": "2024-04-29T12:34:18+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefb8dda01c", "title": "SwiftUI custom TextField. Part 5: Input mask", "url": "https://livsycode.com/swiftui/swiftui-custom-textfield-part-5-input-mask/", "published_at": "2024-04-26T17:25:57+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefb959b9b1", "title": "SwiftUI custom TextField. Part 4: Input validation", "url": "https://livsycode.com/swiftui/select-swiftui-custom-textfield-part-4-input-validation/", "published_at": "2024-04-26T08:11:55+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefb9acb2d2", "title": "SwiftUI custom TextField. Part 3: InputAccessoryView", "url": "https://livsycode.com/swiftui/swiftui-custom-textfield-part-3-inputaccessoryview/", "published_at": "2024-04-24T05:29:54+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefba7b304e", "title": "SwiftUI custom TextField. Part 2: Customization", "url": "https://livsycode.com/swiftui/swiftui-custom-textfield-part-2-customization/", "published_at": "2024-04-23T09:28:44+00:00" }, { "id": "01a0bbee-1a26-7394-9a37-0cefbb5ca8a2", "title": "SwiftUI custom TextField. Part 1: Basics", "url": "https://livsycode.com/swiftui/swiftui-textfield-with-uiviewrepresentable/", "published_at": "2024-04-22T11:53:49+00:00" } ] posts Claim your blog
Back to livsycode.com
Blog · corpus.blog/blogs/livsycode.com/posts

livsycode.com

livsycode.com

2024

10 Jun 2024
10 Jun 2024