{"id":3172,"date":"2023-06-08T13:38:42","date_gmt":"2023-06-08T17:38:42","guid":{"rendered":"https:\/\/michaelrowe01.com\/?p=3172"},"modified":"2023-06-08T14:59:35","modified_gmt":"2023-06-08T18:59:35","slug":"build-an-app-with-swiftdata","status":"publish","type":"post","link":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/","title":{"rendered":"Build an app with SwiftData"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"371\" data-attachment-id=\"3173\" data-permalink=\"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/attachment\/%ef%a3%bfwwdc23-20\/\" data-orig-file=\"https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?fit=1920%2C1080&amp;ssl=1\" data-orig-size=\"1920,1080\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"\uf8ffWWDC23-20\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?fit=660%2C371&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?resize=660%2C371&#038;ssl=1\" alt=\"\" class=\"wp-image-3173\" srcset=\"https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?resize=768%2C432&amp;ssl=1 768w, https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?resize=1536%2C864&amp;ssl=1 1536w, https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?w=1920&amp;ssl=1 1920w, https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?w=1320&amp;ssl=1 1320w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Check out \u201cMeet SwiftData\u201d to cover the basics.&nbsp; This is a code along session (<a href=\"https:\/\/developer.apple.com\/wwdc23\/10154\">https:\/\/developer.apple.com\/wwdc23\/10154<\/a>) and you should download the code from <a href=\"https:\/\/developer.apple.com\/documentation\/SwiftUI\/Building-a-document-based-app-using-SwiftData\">https:\/\/developer.apple.com\/documentation\/SwiftUI\/Building-a-document-based-app-using-SwiftData<\/a>&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The code along get\u2019s you to build a cross platform code flashcard app. &nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Meet the App<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This is the flash card app located at the above links.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">SwiftData models<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If you are converting to SwiftData you will change your class to @Model and remove ObservableObject and @Published from it.&nbsp; Then in the Views were you update the object change from @ObservedObject to @Bindable<\/li>\n\n\n\n<li>For more on this. Check out \u201cDiscover Observation with SwiftUI\u201d session\u00a0 &#8211; <a href=\"https:\/\/michaelrowe01.com\/index.php\/blog\/discover-observation-in-swiftui\/\">Discover Observation in SwiftUI<\/a>\u00a0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Querying models to display in UI<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Changing your content view from @State to @Query and removing the sample data assignment allows you to now directly get your data from SwiftData<\/li>\n\n\n\n<li>@Query is a property wrapper that gets data from Swift Data and triggers view updates,&nbsp; You can add simple syntax for (sort: \\.ValueoSortOn) (order: ) and (filter:), and you can have multiple @Query properties in a view.<\/li>\n\n\n\n<li>.modelContainer(for: NameOfClass.self) this will setup a model container, which creates the whole storage stack.&nbsp; Every view can have a single model container.&nbsp; If you don\u2019t have set one up, it won\u2019t save or query.&nbsp; Just set it up in the WindowGroup scene.<\/li>\n\n\n\n<li>You should update your Previews with sample data.&nbsp; Creating an in memory set of sample data achieves this.&nbsp; Look at how this is done in the \u201cPreviewSampleData.swift\u201d file in the project (This failed for me and persisted on both the starter project code along, and the completed final project provided above, I am guessing this may be a Xcode bug).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Creating and updating<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need to accept the modelContext of the view in order to do saves and updates.&nbsp; Just grab it from the Environment<\/li>\n\n\n\n<li>Save is automatic for you<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">[Bonus] Document-based apps<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Changing to document based app, you can turn the flash card deck as separate instances. To do this, you will have to define the package type but it is almost trivial doing this.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Check out \u201cMeet SwiftData\u201d to cover the basics.&nbsp; This is a code along session (https:\/\/developer.apple.com\/wwdc23\/10154) and you should download the code from https:\/\/developer.apple.com\/documentation\/SwiftUI\/Building-a-document-based-app-using-SwiftData&nbsp; The code along get\u2019s you to build a cross platform code flashcard app. &nbsp; Meet the App SwiftData models Querying models to display in UI Creating and updating [Bonus] Document-based apps<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_wp_convertkit_post_meta":{"form":"-1","landing_page":"0","tag":"0","restrict_content":"0"},"hide_page_title":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[2,3],"tags":[716,109,691,680],"class_list":["post-3172","post","type-post","status-publish","format-standard","hentry","category-blog","category-personal-softwareandit","tag-code-along","tag-day-4","tag-swiftdata","tag-wwdc23"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Michael Rowe\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Random Thoughts | A blog about things that interest me.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Build an app with SwiftData | Random Thoughts\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2019\/04\/img_0391.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2019\/04\/img_0391.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"3088\" \/>\n\t\t<meta property=\"og:image:height\" content=\"2316\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-06-08T17:38:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-06-08T18:59:35+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Build an app with SwiftData | Random Thoughts\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2019\/04\/img_0391.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#article\",\"name\":\"Build an app with SwiftData | Random Thoughts\",\"headline\":\"Build an app with SwiftData\",\"author\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/author\\\/michaelrowe\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/michaelrowe01.com\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/%EF%A3%BFWWDC23-20.png?fit=1920%2C1080&ssl=1\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#articleImage\",\"width\":1920,\"height\":1080},\"datePublished\":\"2023-06-08T13:38:42-04:00\",\"dateModified\":\"2023-06-08T14:59:35-04:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#webpage\"},\"articleSection\":\"blog, Personal - Software and IT, code along, Day 4, swiftData, wwdc23\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/michaelrowe01.com\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/category\\\/blog\\\/#listItem\",\"name\":\"blog\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/category\\\/blog\\\/#listItem\",\"position\":2,\"name\":\"blog\",\"item\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/category\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#listItem\",\"name\":\"Build an app with SwiftData\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#listItem\",\"position\":3,\"name\":\"Build an app with SwiftData\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/category\\\/blog\\\/#listItem\",\"name\":\"blog\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/#organization\",\"name\":\"Michael Rowe\",\"description\":\"A blog about things that interest me.\",\"url\":\"https:\\\/\\\/michaelrowe01.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/michaelrowe01.com\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/IMG_0120.jpeg?fit=1024%2C1024&ssl=1\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#organizationLogo\",\"width\":1024,\"height\":1024},\"image\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/author\\\/michaelrowe\\\/#author\",\"url\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/author\\\/michaelrowe\\\/\",\"name\":\"Michael Rowe\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23f6c08c7576fa07e47f582da2eb7619aeb556ceddf53a274fdb9069926e5bc1?s=96&r=g\",\"width\":96,\"height\":96,\"caption\":\"Michael Rowe\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#webpage\",\"url\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/\",\"name\":\"Build an app with SwiftData | Random Thoughts\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/blog\\\/build-an-app-with-swiftdata\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/author\\\/michaelrowe\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/author\\\/michaelrowe\\\/#author\"},\"datePublished\":\"2023-06-08T13:38:42-04:00\",\"dateModified\":\"2023-06-08T14:59:35-04:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/#website\",\"url\":\"https:\\\/\\\/michaelrowe01.com\\\/\",\"name\":\"Random Thoughts\",\"description\":\"A blog about things that interest me.\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Build an app with SwiftData | Random Thoughts","description":"","canonical_url":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#article","name":"Build an app with SwiftData | Random Thoughts","headline":"Build an app with SwiftData","author":{"@id":"https:\/\/michaelrowe01.com\/index.php\/author\/michaelrowe\/#author"},"publisher":{"@id":"https:\/\/michaelrowe01.com\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2023\/06\/%EF%A3%BFWWDC23-20.png?fit=1920%2C1080&ssl=1","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#articleImage","width":1920,"height":1080},"datePublished":"2023-06-08T13:38:42-04:00","dateModified":"2023-06-08T14:59:35-04:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#webpage"},"isPartOf":{"@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#webpage"},"articleSection":"blog, Personal - Software and IT, code along, Day 4, swiftData, wwdc23"},{"@type":"BreadcrumbList","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com#listItem","position":1,"name":"Home","item":"https:\/\/michaelrowe01.com","nextItem":{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/category\/blog\/#listItem","name":"blog"}},{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/category\/blog\/#listItem","position":2,"name":"blog","item":"https:\/\/michaelrowe01.com\/index.php\/category\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#listItem","name":"Build an app with SwiftData"},"previousItem":{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#listItem","position":3,"name":"Build an app with SwiftData","previousItem":{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/category\/blog\/#listItem","name":"blog"}}]},{"@type":"Organization","@id":"https:\/\/michaelrowe01.com\/#organization","name":"Michael Rowe","description":"A blog about things that interest me.","url":"https:\/\/michaelrowe01.com\/","logo":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/michaelrowe01.com\/wp-content\/uploads\/2024\/11\/IMG_0120.jpeg?fit=1024%2C1024&ssl=1","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#organizationLogo","width":1024,"height":1024},"image":{"@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/michaelrowe01.com\/index.php\/author\/michaelrowe\/#author","url":"https:\/\/michaelrowe01.com\/index.php\/author\/michaelrowe\/","name":"Michael Rowe","image":{"@type":"ImageObject","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/23f6c08c7576fa07e47f582da2eb7619aeb556ceddf53a274fdb9069926e5bc1?s=96&r=g","width":96,"height":96,"caption":"Michael Rowe"}},{"@type":"WebPage","@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#webpage","url":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/","name":"Build an app with SwiftData | Random Thoughts","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/michaelrowe01.com\/#website"},"breadcrumb":{"@id":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/#breadcrumblist"},"author":{"@id":"https:\/\/michaelrowe01.com\/index.php\/author\/michaelrowe\/#author"},"creator":{"@id":"https:\/\/michaelrowe01.com\/index.php\/author\/michaelrowe\/#author"},"datePublished":"2023-06-08T13:38:42-04:00","dateModified":"2023-06-08T14:59:35-04:00"},{"@type":"WebSite","@id":"https:\/\/michaelrowe01.com\/#website","url":"https:\/\/michaelrowe01.com\/","name":"Random Thoughts","description":"A blog about things that interest me.","inLanguage":"en-US","publisher":{"@id":"https:\/\/michaelrowe01.com\/#organization"}}]},"og:locale":"en_US","og:site_name":"Random Thoughts | A blog about things that interest me.","og:type":"article","og:title":"Build an app with SwiftData | Random Thoughts","og:url":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/","og:image":"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2019\/04\/img_0391.jpg","og:image:secure_url":"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2019\/04\/img_0391.jpg","og:image:width":3088,"og:image:height":2316,"article:published_time":"2023-06-08T17:38:42+00:00","article:modified_time":"2023-06-08T18:59:35+00:00","twitter:card":"summary","twitter:title":"Build an app with SwiftData | Random Thoughts","twitter:image":"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2019\/04\/img_0391.jpg"},"aioseo_meta_data":{"post_id":"3172","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":0,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-06-08 16:03:43","updated":"2025-06-04 00:32:15","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/michaelrowe01.com\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/michaelrowe01.com\/index.php\/category\/blog\/\" title=\"blog\">blog<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tBuild an app with SwiftData\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/michaelrowe01.com"},{"label":"blog","link":"https:\/\/michaelrowe01.com\/index.php\/category\/blog\/"},{"label":"Build an app with SwiftData","link":"https:\/\/michaelrowe01.com\/index.php\/blog\/build-an-app-with-swiftdata\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2aMa8-Pa","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/posts\/3172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/comments?post=3172"}],"version-history":[{"count":1,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/posts\/3172\/revisions"}],"predecessor-version":[{"id":3174,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/posts\/3172\/revisions\/3174"}],"wp:attachment":[{"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/media?parent=3172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/categories?post=3172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/tags?post=3172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}