<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Swiftui on Calogero Sanfilippo</title><link>https://calogerosanfilippo.it/tags/swiftui/</link><description>Recent content in Swiftui on Calogero Sanfilippo</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Sun, 26 Jul 2026 10:00:00 +0200</lastBuildDate><atom:link href="https://calogerosanfilippo.it/tags/swiftui/index.xml" rel="self" type="application/rss+xml"/><item><title>CardStore 2.0.0 Released</title><link>https://calogerosanfilippo.it/posts/cardstore-200-released/</link><pubDate>Sun, 26 Jul 2026 10:00:00 +0200</pubDate><guid>https://calogerosanfilippo.it/posts/cardstore-200-released/</guid><description>&lt;p&gt;Version &lt;strong&gt;2.0.0&lt;/strong&gt; of CardStore is out on iOS.&lt;/p&gt;
&lt;p&gt;The original CardStore dates back to 2014 — Objective-C-era Core Data, callback-based persistence, the works. 2.0.0 is a full rewrite: SwiftUI throughout, Swift&amp;rsquo;s newer concurrency, and a different storage layer underneath.&lt;/p&gt;
&lt;h3 id="from-core-data-to-grdb"&gt;
 From Core Data to GRDB
 &lt;a class="heading-link" href="#from-core-data-to-grdb"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;The old app stored cards in Core Data through a hand-rolled &lt;code&gt;NSPersistentStoreCoordinator&lt;/code&gt; setup. The new one uses &lt;a href="https://github.com/groue/GRDB.swift" class="external-link" target="_blank" rel="noopener"&gt;GRDB&lt;/a&gt; on top of SQLite, with a &lt;code&gt;DatabaseMigrator&lt;/code&gt; that&amp;rsquo;s grown by three small migrations as features were added: create the table, add a color column, add a usage counter. Easier to reason about, and easier to extend without touching a &lt;code&gt;.xcdatamodeld&lt;/code&gt; file.&lt;/p&gt;</description></item></channel></rss>