{"id":2393,"date":"2021-12-19T14:24:34","date_gmt":"2021-12-19T19:24:34","guid":{"rendered":"https:\/\/michaelrowe01.com\/?p=2393"},"modified":"2022-12-15T06:46:01","modified_gmt":"2022-12-15T11:46:01","slug":"swiftui-fun-and-bugs","status":"publish","type":"post","link":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/","title":{"rendered":"SwiftUI Fun and Bugs"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Well I fixed the bug!  The issue was the sequence of the code sequence between the ContactPicker and VStack within the Navigation View.  I hadn&#8217;t realized that this was issue (Obviously).  Here&#8217;s a video of the real way it should work.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"2305\" style=\"aspect-ratio: 1581 \/ 2305;\" width=\"1581\" controls src=\"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2021\/12\/Screen-Recording-2021-12-19-at-14.19.11.mov\"><\/video><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">As you can see the UI is now working as you would expect.  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/\n\/\/  AddNewRecipientView.swift\n\/\/  Card Tracker\n\/\/\n\/\/  Created by Michael Rowe on 1\/1\/21.\n\/\/  Copyright \u00a9 2021 Michael Rowe. All rights reserved.\n\/\/\n\nimport SwiftUI\nimport SwiftUIKit\nimport ContactsUI\nimport Contacts\nimport CoreData\n\n\/* Thanks to @rlong405 and @nigelgee for initial guidance in getting past the early issues. *\/\n\nstruct AddNewRecipientView: View {\n    @Environment(\\.managedObjectContext) var moc\n    @Environment(\\.presentationMode) var presentationMode\n\n    @State private var lastName: String = \"\"\n    @State private var firstName: String = \"\"\n    @State private var addressLine1: String = \"\"\n    @State private var addressLine2: String = \"\"\n    @State private var city: String = \"\"\n    @State private var state: String = \"\"\n    @State private var zip: String = \"\"\n    @State private var country: String = \"\"\n\n    @State var showPicker = false\n\n    init() {\n        let navBarApperance = UINavigationBarAppearance()\n        navBarApperance.largeTitleTextAttributes = &#91;\n            .foregroundColor: UIColor.systemGreen,\n            .font: UIFont(name: \"ArialRoundedMTBold\", size: 35)!]\n        navBarApperance.titleTextAttributes = &#91;\n            .foregroundColor: UIColor.systemGreen,\n            .font: UIFont(name: \"ArialRoundedMTBold\", size: 20)!]\n        UINavigationBar.appearance().standardAppearance = navBarApperance\n        UINavigationBar.appearance().scrollEdgeAppearance = navBarApperance\n        UINavigationBar.appearance().compactAppearance = navBarApperance\n    }\n\n    var body: some View {\n        NavigationView {\n            GeometryReader { geomtry in\n                ContactPicker(showPicker: $showPicker, onSelectContact: {contact in\n                    firstName = contact.givenName\n                    lastName = contact.familyName\n                    if contact.postalAddresses.count > 0 {\n                        if let addressString = (\n                            ((contact.postalAddresses&#91;0] as AnyObject).value(forKey: \"labelValuePair\")\n                             as AnyObject).value(forKey: \"value\"))\n                            as? CNPostalAddress {\n                            \/\/ swiftlint:disable:next line_length\n                            let mailAddress = CNPostalAddressFormatter.string(from: addressString, style: .mailingAddress)\n                            addressLine1 = \"\\(addressString.street)\"\n                            addressLine2 = \"\"\n                            city = \"\\(addressString.city)\"\n                            state = \"\\(addressString.state)\"\n                            zip = \"\\(addressString.postalCode)\"\n                            country = \"\\(addressString.country)\"\n                            print(\"Mail address is \\n\\(mailAddress)\")\n                        }\n                    } else {\n                        addressLine1 = \"No Address Provided\"\n                        addressLine2 = \"\"\n                        city = \"\"\n                        state = \"\"\n                        zip = \"\"\n                        country = \"\"\n                        print(\"No Address Provided\")\n                    }\n                    self.showPicker.toggle()\n                }, onCancel: nil)\n                VStack {\n                    Text(\"\")\n                    HStack {\n                        VStack(alignment: .leading) {\n                            TextField(\"First Name\", text: $firstName)\n                                .customTextField()\n                        }\n                        VStack(alignment: .leading) {\n                            TextField(\"Last Name\", text: $lastName)\n                                .customTextField()\n                        }\n                    }\n                    TextField(\"Address Line 1\", text: $addressLine1)\n                        .customTextField()\n                    TextField(\"Address Line 2\", text: $addressLine2)\n                        .customTextField()\n                    HStack {\n                        TextField(\"City\", text: $city)\n                            .customTextField()\n                            .frame(width: geomtry.size.width * 0.48)\n                        Spacer()\n                        TextField(\"ST\", text: $state)\n                            .customTextField()\n                            .frame(width: geomtry.size.width * 0.18)\n                        Spacer()\n                        TextField(\"Zip\", text: $zip)\n                            .customTextField()\n                            .frame(width: geomtry.size.width * 0.28)\n                    }\n                    TextField(\"Country\", text: $country)\n                        .customTextField()\n                    Spacer()\n                }\n            }\n            .padding(&#91;.leading, .trailing], 10 )\n            .navigationTitle(\"Recipient\")\n            .navigationBarItems(trailing:\n                                    HStack {\n                Button(action: {\n                    let contactsPermsissions = checkContactsPermissions()\n                    if contactsPermsissions == true {\n                        self.showPicker.toggle()\n                    }\n                }, label: {\n                    Image(systemName: \"person.crop.circle.fill\")\n                        .font(.largeTitle)\n                        .foregroundColor(.green)\n                })\n                Button(action: {\n                    saveRecipient()\n                    self.presentationMode.wrappedValue.dismiss()\n                }, label: {\n                    Image(systemName: \"square.and.arrow.down\")\n                        .font(.largeTitle)\n                        .foregroundColor(.green)\n                })\n                Button(action: {\n                    self.presentationMode.wrappedValue.dismiss()\n                }, label: {\n                    Image(systemName: \"chevron.down.circle.fill\")\n                        .font(.largeTitle)\n                        .foregroundColor(.green)\n                })\n            }\n            )\n        }\n    }\n\n    func saveRecipient() {\n        print(\"Saving...\")\n        if firstName != \"\" {\n            let recipient = Recipient(context: self.moc)\n            recipient.firstName = firstName\n            recipient.lastName = lastName\n            recipient.addressLine1 = addressLine1.capitalized(with: NSLocale.current)\n            recipient.addressLine2 = addressLine2.capitalized(with: NSLocale.current)\n            recipient.state = state.uppercased()\n            recipient.city = city.capitalized(with: NSLocale.current)\n            recipient.zip = zip\n            recipient.country = country.capitalized(with: NSLocale.current)\n        }\n        do {\n            try moc.save()\n        } catch let error as NSError {\n            print(\"Save error: \\(error), \\(error.userInfo)\")\n        }\n    }\n\n    func checkContactsPermissions() -> Bool {\n        let authStatus = CNContactStore.authorizationStatus(for: .contacts)\n        switch authStatus {\n        case .restricted:\n            print(\"User cannot grant premission, e.g. parental controls are in force.\")\n            return false\n        case .denied:\n            print(\"User has denided permissions\")\n            \/\/ add a popup to say you have denied permissions\n            return false\n        case .notDetermined:\n            print(\"you need to request authorization via the API now\")\n        case .authorized:\n            print(\"already authorized\")\n        @unknown default:\n            print(\"unknown error\")\n            return false\n        }\n        let store = CNContactStore()\n        if authStatus == .notDetermined {\n            store.requestAccess(for: .contacts) {success, error in\n                if !success {\n                    print(\"Not authorized to access contacts. Error = \\(String(describing: error))\")\n                    exit(1)\n                }\n                print(\"Authorized\")\n            }\n        }\n        return true\n    }\n}\n\nstruct AddNewRecipientView_Previews: PreviewProvider {\n    static var previews: some View {\n        AddNewRecipientView()\n            .environment(\\.managedObjectContext, PersistentCloudKitContainer.persistentContainer.viewContext)\n    }\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Well I fixed the bug! The issue was the sequence of the code sequence between the ContactPicker and VStack within the Navigation View. I hadn&#8217;t realized that this was issue (Obviously). Here&#8217;s a video of the real way it should work. As you can see the UI is now working as you would expect.<\/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":[1],"tags":[590,82,527],"class_list":["post-2393","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-cardtracker","tag-code","tag-swiftui"],"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\/uncategorized\/swiftui-fun-and-bugs\/\" \/>\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=\"SwiftUI Fun and Bugs | Random Thoughts\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/\" \/>\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=\"2021-12-19T19:24:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-12-15T11:46:01+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"SwiftUI Fun and Bugs | 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\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#article\",\"name\":\"SwiftUI Fun and Bugs | Random Thoughts\",\"headline\":\"SwiftUI Fun and Bugs\",\"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\\\/2024\\\/11\\\/IMG_0120.jpeg?fit=1024%2C1024&ssl=1\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/#articleImage\",\"width\":1024,\"height\":1024},\"datePublished\":\"2021-12-19T14:24:34-05:00\",\"dateModified\":\"2022-12-15T06:46:01-05:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#webpage\"},\"articleSection\":\"Uncategorized, cardtracker, code, SwiftUI\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#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\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/category\\\/uncategorized\\\/#listItem\",\"position\":2,\"name\":\"Uncategorized\",\"item\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/category\\\/uncategorized\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#listItem\",\"name\":\"SwiftUI Fun and Bugs\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#listItem\",\"position\":3,\"name\":\"SwiftUI Fun and Bugs\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/category\\\/uncategorized\\\/#listItem\",\"name\":\"Uncategorized\"}}]},{\"@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\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#organizationLogo\",\"width\":1024,\"height\":1024},\"image\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#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\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#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\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#webpage\",\"url\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/\",\"name\":\"SwiftUI Fun and Bugs | Random Thoughts\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/uncategorized\\\/swiftui-fun-and-bugs\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/author\\\/michaelrowe\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/michaelrowe01.com\\\/index.php\\\/author\\\/michaelrowe\\\/#author\"},\"datePublished\":\"2021-12-19T14:24:34-05:00\",\"dateModified\":\"2022-12-15T06:46:01-05: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":"SwiftUI Fun and Bugs | Random Thoughts","description":"","canonical_url":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#article","name":"SwiftUI Fun and Bugs | Random Thoughts","headline":"SwiftUI Fun and Bugs","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\/2024\/11\/IMG_0120.jpeg?fit=1024%2C1024&ssl=1","@id":"https:\/\/michaelrowe01.com\/#articleImage","width":1024,"height":1024},"datePublished":"2021-12-19T14:24:34-05:00","dateModified":"2022-12-15T06:46:01-05:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#webpage"},"isPartOf":{"@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#webpage"},"articleSection":"Uncategorized, cardtracker, code, SwiftUI"},{"@type":"BreadcrumbList","@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#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\/uncategorized\/#listItem","name":"Uncategorized"}},{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/category\/uncategorized\/#listItem","position":2,"name":"Uncategorized","item":"https:\/\/michaelrowe01.com\/index.php\/category\/uncategorized\/","nextItem":{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#listItem","name":"SwiftUI Fun and Bugs"},"previousItem":{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#listItem","position":3,"name":"SwiftUI Fun and Bugs","previousItem":{"@type":"ListItem","@id":"https:\/\/michaelrowe01.com\/index.php\/category\/uncategorized\/#listItem","name":"Uncategorized"}}]},{"@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\/uncategorized\/swiftui-fun-and-bugs\/#organizationLogo","width":1024,"height":1024},"image":{"@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#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\/uncategorized\/swiftui-fun-and-bugs\/#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\/uncategorized\/swiftui-fun-and-bugs\/#webpage","url":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/","name":"SwiftUI Fun and Bugs | Random Thoughts","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/michaelrowe01.com\/#website"},"breadcrumb":{"@id":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/#breadcrumblist"},"author":{"@id":"https:\/\/michaelrowe01.com\/index.php\/author\/michaelrowe\/#author"},"creator":{"@id":"https:\/\/michaelrowe01.com\/index.php\/author\/michaelrowe\/#author"},"datePublished":"2021-12-19T14:24:34-05:00","dateModified":"2022-12-15T06:46:01-05: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":"SwiftUI Fun and Bugs | Random Thoughts","og:url":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/","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":"2021-12-19T19:24:34+00:00","article:modified_time":"2022-12-15T11:46:01+00:00","twitter:card":"summary","twitter:title":"SwiftUI Fun and Bugs | Random Thoughts","twitter:image":"https:\/\/michaelrowe01.com\/wp-content\/uploads\/2019\/04\/img_0391.jpg"},"aioseo_meta_data":{"post_id":"2393","title":null,"description":null,"keywords":[],"keyphrases":{"focus":[],"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":[],"defaultGraph":"Article","defaultPostTypeGraph":""},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"}}","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":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-12-19 19:20:37","updated":"2025-06-04 00:22: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\/uncategorized\/\" title=\"Uncategorized\">Uncategorized<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSwiftUI Fun and Bugs\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/michaelrowe01.com"},{"label":"Uncategorized","link":"https:\/\/michaelrowe01.com\/index.php\/category\/uncategorized\/"},{"label":"SwiftUI Fun and Bugs","link":"https:\/\/michaelrowe01.com\/index.php\/uncategorized\/swiftui-fun-and-bugs\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p2aMa8-CB","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/posts\/2393","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=2393"}],"version-history":[{"count":1,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/posts\/2393\/revisions"}],"predecessor-version":[{"id":2395,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/posts\/2393\/revisions\/2395"}],"wp:attachment":[{"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/media?parent=2393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/categories?post=2393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michaelrowe01.com\/index.php\/wp-json\/wp\/v2\/tags?post=2393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}