57,803 blogs · [ { "id": "01a08219-63f9-70d8-9cdb-351db81fa515", "title": "How I Built a New Feature for FlexiBackup Using Cursor + Claude 3.7 Sonnet", "url": "https://swiftsenpai.com/development/built-new-feature-with-cursor/?utm_source=rss&utm_medium=rss&utm_campaign=built-new-feature-with-cursor", "published_at": "2025-04-12T08:33:19+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351db8e89201", "title": "My Journey to the Stage of iOS Conf SG 2024", "url": "https://swiftsenpai.com/development/ios-conf-sg-2024/?utm_source=rss&utm_medium=rss&utm_campaign=ios-conf-sg-2024", "published_at": "2024-02-05T08:00:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351db96d0de7", "title": "Understanding Container Background for Widget in iOS 17", "url": "https://swiftsenpai.com/development/widget-container-background/?utm_source=rss&utm_medium=rss&utm_campaign=widget-container-background", "published_at": "2023-09-12T08:00:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351db97d990c", "title": "How to Create Callback-like Behavior Using AsyncStream in Swift", "url": "https://swiftsenpai.com/swift/asyncstream-callback/?utm_source=rss&utm_medium=rss&utm_campaign=asyncstream-callback", "published_at": "2023-07-18T08:00:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351db9fbc507", "title": "How to Handle Empty States Using UIContentUnavailableConfiguration", "url": "https://swiftsenpai.com/development/using-uicontentunavailableconfiguration/?utm_source=rss&utm_medium=rss&utm_campaign=using-uicontentunavailableconfiguration", "published_at": "2023-06-12T08:00:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351dbaad2051", "title": "5 Simple Steps to Find Slow Code Using Xcode Time Profiler", "url": "https://swiftsenpai.com/xcode/using-time-profiler/?utm_source=rss&utm_medium=rss&utm_campaign=using-time-profiler", "published_at": "2023-06-06T08:30:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351dbb784582", "title": "Handling WebP Images When Using PHPickerViewController", "url": "https://swiftsenpai.com/development/webp-phpickerviewcontroller/?utm_source=rss&utm_medium=rss&utm_campaign=webp-phpickerviewcontroller", "published_at": "2023-05-23T08:00:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351dbc0aa5ec", "title": "How to Define Custom URL Actions for SwiftUI Text Views", "url": "https://swiftsenpai.com/development/swiftui-custom-url-action/?utm_source=rss&utm_medium=rss&utm_campaign=swiftui-custom-url-action", "published_at": "2023-05-09T07:00:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351dbc95817f", "title": "How to Use UIHostingConfiguration to Integrate SwiftUI Views into UIKit Apps", "url": "https://swiftsenpai.com/development/uihostingconfiguration-subview/?utm_source=rss&utm_medium=rss&utm_campaign=uihostingconfiguration-subview", "published_at": "2023-04-25T07:00:00+00:00" }, { "id": "01a08219-63f9-70d8-9cdb-351dbd90cfd9", "title": "How to Create Custom Redacted Effects on Widgets?", "url": "https://swiftsenpai.com/development/widget-custom-redacted-effects/?utm_source=rss&utm_medium=rss&utm_campaign=widget-custom-redacted-effects", "published_at": "2023-04-11T07:00:00+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec2a3f36b", "title": "How to Hide Sensitive Widget Data When Device Is Locked?", "url": "https://swiftsenpai.com/development/hide-sensitive-widget-data/?utm_source=rss&utm_medium=rss&utm_campaign=hide-sensitive-widget-data", "published_at": "2023-03-28T07:00:00+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec2b3adab", "title": "How to Handle Tap Gestures on Widgets?", "url": "https://swiftsenpai.com/development/widget-tap-gestures/?utm_source=rss&utm_medium=rss&utm_campaign=widget-tap-gestures", "published_at": "2023-03-14T11:46:41+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec2c3bf14", "title": "How to Create Configurable Widgets With Dynamic Options?", "url": "https://swiftsenpai.com/development/configurable-widgets-dynamic-options/?utm_source=rss&utm_medium=rss&utm_campaign=configurable-widgets-dynamic-options", "published_at": "2023-02-28T12:03:24+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec3078713", "title": "How to Create Configurable Widgets With Static Options?", "url": "https://swiftsenpai.com/development/configurable-widgets-static-options/?utm_source=rss&utm_medium=rss&utm_campaign=configurable-widgets-static-options", "published_at": "2023-02-14T11:41:48+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec3839246", "title": "How to Fetch and Show Remote Data on a Widget?", "url": "https://swiftsenpai.com/development/widget-load-remote-data/?utm_source=rss&utm_medium=rss&utm_campaign=widget-load-remote-data", "published_at": "2023-01-31T11:51:43+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec47fa45f", "title": "How to Update or Refresh a Widget?", "url": "https://swiftsenpai.com/development/refreshing-widget/?utm_source=rss&utm_medium=rss&utm_campaign=refreshing-widget", "published_at": "2023-01-17T11:53:44+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec50a7a7c", "title": "How to Support Multiple Widgets When Using WidgetKit?", "url": "https://swiftsenpai.com/development/support-multiple-widgets/?utm_source=rss&utm_medium=rss&utm_campaign=support-multiple-widgets", "published_at": "2023-01-03T11:59:41+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec5ad7e17", "title": "How to Create an iOS Lock Screen Widget?", "url": "https://swiftsenpai.com/development/create-lock-screen-widget/?utm_source=rss&utm_medium=rss&utm_campaign=create-lock-screen-widget", "published_at": "2022-12-20T12:35:38+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec6120c23", "title": "Getting Started With WidgetKit", "url": "https://swiftsenpai.com/development/getting-started-widgetkit/?utm_source=rss&utm_medium=rss&utm_campaign=getting-started-widgetkit", "published_at": "2022-12-06T12:39:01+00:00" }, { "id": "01a0d9c5-a0f4-705d-8c75-81bec6d76fb2", "title": "How Does Swift Concurrency Prevent Thread Explosions?", "url": "https://swiftsenpai.com/swift/swift-concurrency-prevent-thread-explosion/?utm_source=rss&utm_medium=rss&utm_campaign=swift-concurrency-prevent-thread-explosion", "published_at": "2022-11-08T11:54:30+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f68967fc", "title": "Create Custom Cell with Placeholder UI Using UIHostingConfiguration", "url": "https://swiftsenpai.com/development/uihostingconfiguration-placeholder-cell/?utm_source=rss&utm_medium=rss&utm_campaign=uihostingconfiguration-placeholder-cell", "published_at": "2022-10-25T12:06:46+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f782e43a", "title": "How to Find All Fully Visible Cells in Table and Collection View", "url": "https://swiftsenpai.com/development/find-fully-visible-cells/?utm_source=rss&utm_medium=rss&utm_campaign=find-fully-visible-cells", "published_at": "2022-10-11T12:44:31+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f7cfe85b", "title": "How to Create Custom Header & Footer Using UIHostingConfiguration", "url": "https://swiftsenpai.com/development/uihostingconfiguration-custom-header/?utm_source=rss&utm_medium=rss&utm_campaign=uihostingconfiguration-custom-header", "published_at": "2022-09-27T12:06:17+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f7ea8009", "title": "How to Refresh Cell’s Content When Using UIHostingConfiguration", "url": "https://swiftsenpai.com/development/refresh-cells-uihostingconfiguration/?utm_source=rss&utm_medium=rss&utm_campaign=refresh-cells-uihostingconfiguration", "published_at": "2022-09-13T11:45:29+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f89332e1", "title": "Handling Cell Interactions When Using UIHostingConfiguration in iOS 16", "url": "https://swiftsenpai.com/development/uihostingconfiguration-cell-interactions/?utm_source=rss&utm_medium=rss&utm_campaign=uihostingconfiguration-cell-interactions", "published_at": "2022-08-22T12:16:27+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f8b18381", "title": "How To Create Custom UICollectionViewListCell Using SwiftUI", "url": "https://swiftsenpai.com/development/swiftui-custom-cell/?utm_source=rss&utm_medium=rss&utm_campaign=swiftui-custom-cell", "published_at": "2022-08-09T11:56:59+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f90bda4d", "title": "How to Use the SwiftUI PhotosPicker", "url": "https://swiftsenpai.com/development/swiftui-photos-picker/?utm_source=rss&utm_medium=rss&utm_campaign=swiftui-photos-picker", "published_at": "2022-07-26T11:53:00+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3f96b3795", "title": "How to Achieve Dynamic Dispatch Using Generic Protocols in Swift 5.7", "url": "https://swiftsenpai.com/swift/dynamic-dispatch-with-generic-protocols/?utm_source=rss&utm_medium=rss&utm_campaign=dynamic-dispatch-with-generic-protocols", "published_at": "2022-07-05T12:36:39+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3fa306a9d", "title": "Understanding the “some” and “any” keywords in Swift 5.7", "url": "https://swiftsenpai.com/swift/understanding-some-and-any/?utm_source=rss&utm_medium=rss&utm_campaign=understanding-some-and-any", "published_at": "2022-06-21T12:47:32+00:00" }, { "id": "01a0d9c6-6340-7074-a3fa-85e3fafcda94", "title": "How to Fetch Data From the Ethereum Blockchain Using Swift", "url": "https://swiftsenpai.com/development/fetch-data-from-ethereum/?utm_source=rss&utm_medium=rss&utm_campaign=fetch-data-from-ethereum", "published_at": "2022-05-10T12:14:25+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-9295258942da", "title": "How to Write Images to Camera Roll in iOS", "url": "https://swiftsenpai.com/development/write-images-to-camera-roll/?utm_source=rss&utm_medium=rss&utm_campaign=write-images-to-camera-roll", "published_at": "2022-03-23T12:53:09+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-929525918bbe", "title": "How to Hijack WKWebView Navigation Actions", "url": "https://swiftsenpai.com/development/hijack-wkwebview-navigation/?utm_source=rss&utm_medium=rss&utm_campaign=hijack-wkwebview-navigation", "published_at": "2022-02-22T13:02:26+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-9295261fe95f", "title": "Injecting JavaScript Into Web View In iOS", "url": "https://swiftsenpai.com/development/web-view-javascript-injection/?utm_source=rss&utm_medium=rss&utm_campaign=web-view-javascript-injection", "published_at": "2022-01-11T12:18:37+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-9295270940dc", "title": "How to Handle Errors in Swift Task Groups", "url": "https://swiftsenpai.com/swift/task-groups-error-handling/?utm_source=rss&utm_medium=rss&utm_campaign=task-groups-error-handling", "published_at": "2021-11-16T12:10:23+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-9295274d474d", "title": "Understanding Swift Task Groups With Example", "url": "https://swiftsenpai.com/swift/understanding-task-groups/?utm_source=rss&utm_medium=rss&utm_campaign=understanding-task-groups", "published_at": "2021-10-26T11:28:33+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-9295276dbd03", "title": "How Sendable Can Help in Preventing Data Races", "url": "https://swiftsenpai.com/swift/sendable-prevent-data-races/?utm_source=rss&utm_medium=rss&utm_campaign=sendable-prevent-data-races", "published_at": "2021-10-05T12:13:17+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-9295285bca28", "title": "The Actor Reentrancy Problem in Swift", "url": "https://swiftsenpai.com/swift/actor-reentrancy-problem/?utm_source=rss&utm_medium=rss&utm_campaign=actor-reentrancy-problem", "published_at": "2021-09-21T12:07:28+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-929528b1d4b2", "title": "Preventing Data Races Using Actors in Swift", "url": "https://swiftsenpai.com/swift/actor-prevent-data-race/?utm_source=rss&utm_medium=rss&utm_campaign=actor-prevent-data-race", "published_at": "2021-09-07T12:07:41+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-9295290250f8", "title": "How to Use URLSession with Async/await in Swift", "url": "https://swiftsenpai.com/swift/async-await-network-requests/?utm_source=rss&utm_medium=rss&utm_campaign=async-await-network-requests", "published_at": "2021-08-24T12:07:59+00:00" }, { "id": "01a0d9c6-faf8-7117-8f7c-929529acbb30", "title": "Getting Started with Swift Concurrency", "url": "https://swiftsenpai.com/swift/swift-concurrency-get-started/?utm_source=rss&utm_medium=rss&utm_campaign=swift-concurrency-get-started", "published_at": "2021-08-10T12:18:48+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec871bcbf4", "title": "Persisting Sensitive Data Using Keychain in Swift", "url": "https://swiftsenpai.com/development/persist-data-using-keychain/?utm_source=rss&utm_medium=rss&utm_campaign=persist-data-using-keychain", "published_at": "2021-07-27T12:10:33+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec8819390b", "title": "5 Complex Algorithms Simplified Using Swift’s Higher-Order Functions", "url": "https://swiftsenpai.com/swift/5-complex-algorithms-simplified/?utm_source=rss&utm_medium=rss&utm_campaign=5-complex-algorithms-simplified", "published_at": "2021-07-06T12:50:56+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec88299408", "title": "Table and Collection View Cells Reload Improvements in iOS 15", "url": "https://swiftsenpai.com/development/cells-reload-improvements-ios-15/?utm_source=rss&utm_medium=rss&utm_campaign=cells-reload-improvements-ios-15", "published_at": "2021-06-16T14:23:35+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec88e93307", "title": "Adding Swift Code as Custom LLDB Command", "url": "https://swiftsenpai.com/testing/add-custom-lldb/?utm_source=rss&utm_medium=rss&utm_campaign=add-custom-lldb", "published_at": "2021-06-02T12:56:19+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec88f02b4a", "title": "Automatic Keyboard Avoidance for UIKit", "url": "https://swiftsenpai.com/development/uikit-keyboard-avoidance/?utm_source=rss&utm_medium=rss&utm_campaign=uikit-keyboard-avoidance", "published_at": "2021-05-18T13:20:34+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec897cc3e8", "title": "I Spend 1 Hour to Remove an UIImageView Rounded Corners, and Here’s Why", "url": "https://swiftsenpai.com/development/i-spend-1-hour-remove-rounded-corners/?utm_source=rss&utm_medium=rss&utm_campaign=i-spend-1-hour-remove-rounded-corners", "published_at": "2021-05-08T12:20:54+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec8a2c051a", "title": "Getting Ready for App Tracking Transparency", "url": "https://swiftsenpai.com/development/get-ready-apptrackingtransparency/?utm_source=rss&utm_medium=rss&utm_campaign=get-ready-apptrackingtransparency", "published_at": "2021-04-21T14:16:00+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec8a6bda47", "title": "How to Manage Photo Library Permission in iOS", "url": "https://swiftsenpai.com/development/photo-library-permission/?utm_source=rss&utm_medium=rss&utm_campaign=photo-library-permission", "published_at": "2021-04-13T14:23:50+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec8b3f3966", "title": "How I Created a DSL for Diffable Section Snapshot using Result Builders", "url": "https://swiftsenpai.com/swift/section-snapshot-builder/?utm_source=rss&utm_medium=rss&utm_campaign=section-snapshot-builder", "published_at": "2021-03-26T15:24:04+00:00" }, { "id": "01a0d9c7-c16b-72b7-a006-21ec8c014813", "title": "Swift Result Builders: The Basics You Need to Know!", "url": "https://swiftsenpai.com/swift/result-builders-basics/?utm_source=rss&utm_medium=rss&utm_campaign=result-builders-basics", "published_at": "2021-03-10T15:08:31+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416cfe98d4e", "title": "How to Reload the Diffable Section Header", "url": "https://swiftsenpai.com/development/reload-diffable-section-header/?utm_source=rss&utm_medium=rss&utm_campaign=reload-diffable-section-header", "published_at": "2021-02-21T14:00:20+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d0c953f5", "title": "Re-enabling the iOS Simulator Slow Animations Shortcut", "url": "https://swiftsenpai.com/xcode/enable-simulator-slow-mo-shortcut/?utm_source=rss&utm_medium=rss&utm_campaign=enable-simulator-slow-mo-shortcut", "published_at": "2021-02-06T14:50:52+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d1c5f726", "title": "The Undocumented Facts of Diffable Data Source Section Snapshot", "url": "https://swiftsenpai.com/development/undocumented-section-snapshot-facts/?utm_source=rss&utm_medium=rss&utm_campaign=undocumented-section-snapshot-facts", "published_at": "2021-01-25T14:39:16+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d2061f1c", "title": "Replicate the Expandable Date Picker Using UICollectionView List", "url": "https://swiftsenpai.com/development/expandable-date-picker-list/?utm_source=rss&utm_medium=rss&utm_campaign=expandable-date-picker-list", "published_at": "2021-01-10T13:53:25+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d2c88c16", "title": "The Large Title UINavigationBar Glitches and How to Fix Them", "url": "https://swiftsenpai.com/development/large-title-uinavigationbar-glitches/?utm_source=rss&utm_medium=rss&utm_campaign=large-title-uinavigationbar-glitches", "published_at": "2020-12-14T13:33:44+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d2fa01ac", "title": "Reducing Memory Footprint When Using UIImage", "url": "https://swiftsenpai.com/development/reduce-uiimage-memory-footprint/?utm_source=rss&utm_medium=rss&utm_campaign=reduce-uiimage-memory-footprint", "published_at": "2020-12-01T01:42:33+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d3b6f5df", "title": "How to Change Text in iOS Lottie Animation", "url": "https://swiftsenpai.com/development/lottie-text-provider/?utm_source=rss&utm_medium=rss&utm_campaign=lottie-text-provider", "published_at": "2020-11-15T02:32:38+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d40dd46a", "title": "UICollectionView List with Interactive Custom Header", "url": "https://swiftsenpai.com/development/list-interactive-custom-header/?utm_source=rss&utm_medium=rss&utm_campaign=list-interactive-custom-header", "published_at": "2020-11-07T09:05:29+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d432a524", "title": "Declarative UICollectionView List Header and Footer", "url": "https://swiftsenpai.com/development/declarative-list-header-footer/?utm_source=rss&utm_medium=rss&utm_campaign=declarative-list-header-footer", "published_at": "2020-10-19T13:50:09+00:00" }, { "id": "01a0d9c8-40b1-70c7-b79a-4416d4c6737a", "title": "The Modern Ways to Reload Your Table and Collection View Cells", "url": "https://swiftsenpai.com/development/modern-ways-reload-cells/?utm_source=rss&utm_medium=rss&utm_campaign=modern-ways-reload-cells", "published_at": "2020-10-04T09:35:55+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa2e0e4a0", "title": "Building an Expandable List Using UICollectionView: Part 2", "url": "https://swiftsenpai.com/development/collectionview-expandable-list-part2/?utm_source=rss&utm_medium=rss&utm_campaign=collectionview-expandable-list-part2", "published_at": "2020-09-22T14:57:04+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa390af03", "title": "Building an Expandable List Using UICollectionView: Part 1", "url": "https://swiftsenpai.com/development/collectionview-expandable-list-part1/?utm_source=rss&utm_medium=rss&utm_campaign=collectionview-expandable-list-part1", "published_at": "2020-09-10T06:45:18+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa3a4a30f", "title": "Designing Custom UICollectionViewListCell in Interface Builder", "url": "https://swiftsenpai.com/development/custom-uicollectionviewlistcell-in-ib/?utm_source=rss&utm_medium=rss&utm_campaign=custom-uicollectionviewlistcell-in-ib", "published_at": "2020-08-22T14:02:53+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa3fa8b35", "title": "UICollectionView List with Custom Cell and Custom Configuration", "url": "https://swiftsenpai.com/development/uicollectionview-list-custom-cell/?utm_source=rss&utm_medium=rss&utm_campaign=uicollectionview-list-custom-cell", "published_at": "2020-08-09T14:23:55+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa488a2b5", "title": "Building a List with UICollectionView in Swift", "url": "https://swiftsenpai.com/development/uicollectionview-list-basic/?utm_source=rss&utm_medium=rss&utm_campaign=uicollectionview-list-basic", "published_at": "2020-07-25T17:30:22+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa53ed2b6", "title": "Grouping Array Elements With Dictionary in Swift", "url": "https://swiftsenpai.com/swift/group-array-elements-with-dictionary/?utm_source=rss&utm_medium=rss&utm_campaign=group-array-elements-with-dictionary", "published_at": "2020-06-30T13:38:57+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa561fdcb", "title": "Integrate Google Sign-In with Firebase Authentication", "url": "https://swiftsenpai.com/development/google-sign-in-firebase-authentication/?utm_source=rss&utm_medium=rss&utm_campaign=google-sign-in-firebase-authentication", "published_at": "2020-06-15T14:34:57+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa63387b2", "title": "Google Sign-In Integration in iOS", "url": "https://swiftsenpai.com/development/google-sign-in-integration/?utm_source=rss&utm_medium=rss&utm_campaign=google-sign-in-integration", "published_at": "2020-06-08T02:51:10+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa6d50722", "title": "Decode and Flatten JSON with Dynamic Keys Using Decodable", "url": "https://swiftsenpai.com/swift/decode-dynamic-keys-json/?utm_source=rss&utm_medium=rss&utm_campaign=decode-dynamic-keys-json", "published_at": "2020-05-30T14:50:00+00:00" }, { "id": "01a0d9c8-a543-7398-ba4d-26dfa71ccc4b", "title": "How to Define a Protocol With @Published Property Wrapper Type", "url": "https://swiftsenpai.com/swift/define-protocol-with-published-property-wrapper/?utm_source=rss&utm_medium=rss&utm_campaign=define-protocol-with-published-property-wrapper", "published_at": "2020-05-17T08:21:24+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bb86766bb", "title": "Settings Bundles Management in Xcode", "url": "https://swiftsenpai.com/xcode/settings-bundles-management/?utm_source=rss&utm_medium=rss&utm_campaign=settings-bundles-management", "published_at": "2020-05-10T07:18:54+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bb89f0496", "title": "Modifying Lottie Animation with Value Providers", "url": "https://swiftsenpai.com/development/lottie-value-providers/?utm_source=rss&utm_medium=rss&utm_campaign=lottie-value-providers", "published_at": "2020-05-02T13:02:48+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bb8df8afd", "title": "Controlling Lottie Animation with Markers", "url": "https://swiftsenpai.com/development/lottie-animation-markers/?utm_source=rss&utm_medium=rss&utm_campaign=lottie-animation-markers", "published_at": "2020-04-18T15:42:34+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bb9559767", "title": "Lottie Advance Animation Playback", "url": "https://swiftsenpai.com/development/lottie-advance-animation-playback/?utm_source=rss&utm_medium=rss&utm_campaign=lottie-advance-animation-playback", "published_at": "2020-04-12T15:11:47+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bba443da3", "title": "Getting Started with Lottie Animations in iOS", "url": "https://swiftsenpai.com/development/lottie-getting-started/?utm_source=rss&utm_medium=rss&utm_campaign=lottie-getting-started", "published_at": "2020-04-09T13:24:41+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bbacf9cdc", "title": "5 Must-Know Xcode Shortcuts for Unit Testing", "url": "https://swiftsenpai.com/xcode/xcode-unit-test-shortcuts/?utm_source=rss&utm_medium=rss&utm_campaign=xcode-unit-test-shortcuts", "published_at": "2020-03-29T03:00:14+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bbb71607e", "title": "How to Send Silent Push Notifications", "url": "https://swiftsenpai.com/testing/send-silent-push-notifications/?utm_source=rss&utm_medium=rss&utm_campaign=send-silent-push-notifications", "published_at": "2020-03-21T13:53:08+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bbbef885c", "title": "Integrate ‘Sign in with Apple’ with Firebase Authentication", "url": "https://swiftsenpai.com/development/sign-in-with-apple-firebase-auth/?utm_source=rss&utm_medium=rss&utm_campaign=sign-in-with-apple-firebase-auth", "published_at": "2020-03-14T14:38:08+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bbc879f93", "title": "How to Use ASAuthorizationAppleIDButton in Storyboard", "url": "https://swiftsenpai.com/xcode/asauthorizationappleidbutton-in-storyboard/?utm_source=rss&utm_medium=rss&utm_campaign=asauthorizationappleidbutton-in-storyboard", "published_at": "2020-02-23T14:18:14+00:00" }, { "id": "01a0d9c9-5710-73c7-98be-b59bbcd9d9c0", "title": "Simulating Push Notifications in iOS Simulator", "url": "https://swiftsenpai.com/xcode/simulating-push-notifications-in-ios-simulator/?utm_source=rss&utm_medium=rss&utm_campaign=simulating-push-notifications-in-ios-simulator", "published_at": "2020-02-13T10:33:55+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991a4e52bc", "title": "How to Implement a Swift HTTP Request Helper Without a Working Server", "url": "https://swiftsenpai.com/testing/implemented-http-request-helper-without-server/?utm_source=rss&utm_medium=rss&utm_campaign=implemented-http-request-helper-without-server", "published_at": "2020-02-11T16:48:20+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991b3a64be", "title": "46% of People Think This Swift Code Has Error, Apparently, It Doesn’t!", "url": "https://swiftsenpai.com/swift/this-swift-code-has-error/?utm_source=rss&utm_medium=rss&utm_campaign=this-swift-code-has-error", "published_at": "2020-02-02T13:31:10+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991c13c7e3", "title": "Making Sense of Swift ? and ! Operators in Optional, Downcasting and Initialization", "url": "https://swiftsenpai.com/swift/making-sense-of-swift-operators/?utm_source=rss&utm_medium=rss&utm_campaign=making-sense-of-swift-operators", "published_at": "2020-01-29T09:47:20+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991cbc817f", "title": "Test Doubles in Swift: Dummy, Fake, Stub, Mock", "url": "https://swiftsenpai.com/testing/test-doubles-in-swift/?utm_source=rss&utm_medium=rss&utm_campaign=test-doubles-in-swift", "published_at": "2020-01-24T00:11:12+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991d3bba54", "title": "Creating Custom Facebook Login Button in Swift", "url": "https://swiftsenpai.com/development/creating-custom-facebook-login-button-in-swift/?utm_source=rss&utm_medium=rss&utm_campaign=creating-custom-facebook-login-button-in-swift", "published_at": "2020-01-13T07:29:52+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991e10908f", "title": "Step-by-Step: Facebook Login Integration in Swift", "url": "https://swiftsenpai.com/development/facebook-login-integration-in-swift/?utm_source=rss&utm_medium=rss&utm_campaign=facebook-login-integration-in-swift", "published_at": "2020-01-09T07:19:45+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991ea2e773", "title": "Top 10 Most Useful Xcode Shortcuts for Navigation", "url": "https://swiftsenpai.com/xcode/top-10-most-useful-xcode-shortcuts-for-navigation/?utm_source=rss&utm_medium=rss&utm_campaign=top-10-most-useful-xcode-shortcuts-for-navigation", "published_at": "2020-01-06T09:27:24+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991f08cae0", "title": "Can You Answer This Simple Swift Question Correctly?", "url": "https://swiftsenpai.com/swift/can-you-answer-this-simple-swift-question-correctly/?utm_source=rss&utm_medium=rss&utm_campaign=can-you-answer-this-simple-swift-question-correctly", "published_at": "2020-01-01T12:42:36+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f991fa267cb", "title": "Implement In-App Dark Mode Using Swift Observation Protocols", "url": "https://swiftsenpai.com/development/implement-in-app-dark-mode-using-swift-observation-protocols/?utm_source=rss&utm_medium=rss&utm_campaign=implement-in-app-dark-mode-using-swift-observation-protocols", "published_at": "2019-12-16T10:40:38+00:00" }, { "id": "01a0d9c9-e6b5-712c-a71c-8f992054800b", "title": "What a Designer Needs to Know about iOS Dark Mode When Working with a Developer", "url": "https://swiftsenpai.com/design/what-a-designer-need-to-know-about-ios-dark-mode/?utm_source=rss&utm_medium=rss&utm_campaign=what-a-designer-need-to-know-about-ios-dark-mode", "published_at": "2019-11-15T15:37:13+00:00" }, { "id": "01a0d9ca-4f98-73e6-bb02-5e225f2015db", "title": "Create the Perfect UserDefaults Wrapper Using Property Wrapper", "url": "https://swiftsenpai.com/swift/create-the-perfect-userdefaults-wrapper-using-property-wrapper/?utm_source=rss&utm_medium=rss&utm_campaign=create-the-perfect-userdefaults-wrapper-using-property-wrapper", "published_at": "2019-10-19T06:08:27+00:00" } ] posts Claim your blog
Back to Swift Senpai
Blog · corpus.blog/blogs/swiftsenpai.com/posts

Swift Senpai

swiftsenpai.com

2025

2024

2023

2022

2021

2020

2019