Posts

Post not yet marked as solved
0 Replies
391 Views
Hi, I'm updating my app from CoreData to SwiftData and came across an issue. My app has multiple users so in CoreData and I assigned each a myID value set to an UUID so I could use UserDefaults to set the preferred user on app load. When switching over I noticed the PersistentIdentifier value and got excited as I could fetch the matching entity with modelContext.model(for: yourID). I decided to use that instead so I updated my UserDefaults code from UUID to this: @Published var selectedUserID: PersistentIdentifier? { didSet { UserDefaults.standard.set(selectedUserID, forKey: "selectedUserID") } } init() { self.selectedUserID = UserDefaults.standard.object(forKey: "selectedUserID") as? PersistentIdentifier ?? nil } This code compiles and, of course the id is currently set to nil. My issue now is when I try to assign a user to it ar my app crashes and I get the following error: Attempt to set a non-property-list object SwiftData.PersistentIdentifier(id: SwiftData.PersistentIdentifier.ID(url: x-coredata://6FE80FC9-0B4C-491E-8093-DED37A619F1B/EnteredUser/p834), implementation: SwiftData.PersistentIdentifierImplementation) as an NSUserDefaults/CFPreferences value for key selectedUserID Should I go back to an additional UUID field in my user model and find it that way or is there a way to use the PersistentIdentifier value with my UserDefaults? Thanks for any tips.
Posted Last updated
.
Post not yet marked as solved
2 Replies
1.6k Views
Yesterday I had issues with my CoreData database for my Multiplatform app which resulted in changes to the schema. I reset the CloudKit version and, on the iOS simulator, had to delete my app and run the code again to get it to work. My issue is with the macOS target. I'm getting the same fatalError (Fatal error: Unresolved error Error Domain=NSCocoaErrorDomain Code=134140 "Persistent store migration failed, missing mapping model.") when running the macOS app but I can't figure out how to delete it so I can run it fresh like I did with the iOS version. I've found where the application is created (in the Debug directory ultimately within my app's Build directory) and removed them all but when run the newly created application has the same error. Should I move up the directory structure and remove the entire app directory within Xcode/DerivedData or is there another way? Wanted an answer before I do something I can't go back from :) Thanks, Kyra
Posted Last updated
.
Post not yet marked as solved
0 Replies
653 Views
I'm currently hooking up StoreKit2 to my app. I worked my way through an older example that listened to products and added/removed ids as they came up. This example fell short using the StoreKit config file as all subscriptions don't have a revocation date set so my list of purchased ids just grew longer (as they weren't removed). My app is only using a single subscription group and thus will only have one subscription live at once. I'm currently grabbing the current subscription using for await result in Transaction.currentEntitlements and am showing the subscriptions with StoreView(ids: arrayIds) and SubscriptionStoreView(groupID: subscriptionGroupID) depending where they user is. Currently when those views disappear I grab the current subscription again (thus updating it if it was changed). That seems cumbersome especially if it doesn't need to be updated and I'm not getting the following error: Making a purchase without listening for transaction updates risks missing successful purchases. Create a Task to iterate Transaction.updates at launch.. I'm wondering if there's a way to just listen to the StoreKit Subscription ID in my main App entry point thus making the final error disappear and maybe, if I could update the type of subscription, removing my onDisappear subscription fetches throughout the rest of the app. All the examples I come across seem to be either tied up with SwiftData (WWDC 2023) or older and maybe not applicable anymore. Everything seems to be embedded in StoreKit and it would be lovely if I could listen in one simple spot for in app and outside app subscription changes. Thanks :)
Posted Last updated
.
Post not yet marked as solved
0 Replies
255 Views
Hi, I'm looking through the Backyard Birds app and trying to wrap my head around StoreKit 2 and make it work with my app. Currently my app is three tabs that, for example, call access1, access2, and profile. I want to make users pay for access to the first two tabs and, by default, profile is visible on download for unsubscribed members. In the Backyard Birds app they have three levels that are clear cut and then they figure out access for family sharing by the highest level the user has. I currently have six subscriptions listed under my group: level1: all access annual all access monthly level2: access1 only annual access1 only monthly access2 only annual access2 only monthly My thought with this (not set up yet) is if the user subscribes to all access they have access to all three tabs. If they subscribe to access1 only they have access to the first and third(profile) tabs. If they subscribe to access2 then they have access to the second and third tabs. I guess my main problem is I don't know how to implement func status(for statuses: [Product.SubscriptionInfo.Status], ids: PassIdentifiers) -> PassStatus as if there's a family member with access1 and another family member with access2 then the current person should essentially have all access (all three tab access). Before I stumbled along further I wanted to check with all of you and see if there's a better way to set up or continue with the Backyard Pass example with different logic in status. Thanks everyone.
Posted Last updated
.
Post not yet marked as solved
1 Replies
1.4k Views
I'm restarting my app using CoreData and CloudKit and want to implement testing before I get too far and it becomes unmanageable. Is there a good tutorial anyone has found for testing when using SwiftUI (macOS and iOS but not storyboards). Thanks. It seems overwhelming right now and I don't know where to start. :)
Posted Last updated
.
Post not yet marked as solved
0 Replies
691 Views
I'm setting up tests for my Xcode Multiplatform App. To create a test environment I created a docker image that I want to run an XCTestCase against. I understand I'd have to make sure Docker is running before running the test. That said I have a permission denied when trying to connect to the docker daemon socket. Background: I'm using a makefile to store the commands and planned to run the docker build and docker run commands in the setUpWithError while running the docker kill command in tearDownWithError. To run the commands I used Process to execute the shell commands. I'm currently doing this is a test function to get it up and going. Issue: When I try to run the docker command Xcode tells me that it doesn't give me the permission to run it: docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create?name=remarkable": dial unix /var/run/docker.sock: connect: operation not permitted. See 'docker run --help'. I only want to use Docker to run this specific XCTestCase. Is there anyway to run it from here JUST for the test? Or do I need to manually run docker and kill it before/after I run these tests? Thanks for any help.
Posted Last updated
.
Post not yet marked as solved
0 Replies
589 Views
I'm looking to test my Xcode project using the default file set up XCTestCase... but I need to test it against a service that will need to be started before the test and stopped after the test. I was hoping to start and end it within the setUpWithError and tearDownWithError methods but I don't know how. Is there a way I could run commands from the testing environment? Basically I want to figure out where it's executing from ls one time, move my files over, and then I can go through starting the service setUpWithError, running the tests, and then ending the service tearDownWithError. Specifically the service runs a Docker image and I use a Makefile to make it a simple command. I just want to start and end it from the test environment. Thanks
Posted Last updated
.
Post marked as solved
1 Replies
1.3k Views
I'm developing a Multiplatform app that uses CloudKit to sync the CoreData between the user's devices. At this time they don't share data between users. I have a single password field on a single Entity and was wondering if there was a simple way to encrypt just this field. I see in CoreData there's a checkbox labelled "Allows Cloud Encryption"... does checking that off magically encrypt it. I checked it off and nothing seemed to change so I unchecked it for now... is there something else I needed to do? And, most importantly, will it work with CloudKit?
Posted Last updated
.
Post not yet marked as solved
1 Replies
663 Views
Hi. I’m developing a multiplatform app for both iOS and macOS and was wondering if there’s any way to display an SVG file in the swiftUI view. I’ve seen ways online once you put the image in the assets file but this will be dynamic coming from outside the program. I just want to display and maybe rotate it but nothing more complicated than that. thanks
Posted Last updated
.
Post not yet marked as solved
2 Replies
513 Views
Hey, During a developer Q&A today I was referred to a "Sundae shop" (the ice cream) sample code from, I think it was, WWDC 2020. Does anyone know where I can find it? I want it mainly for ObservedObject updates for my view from an async model. Thanks :)
Posted Last updated
.
Post marked as solved
2 Replies
2.4k Views
I'm attempting to figure out how to display a message to my users when some asynchronous code takes some time to run. So far I've used a sample I found online to create a popup banner and tied the message together using an ObservedObject of the async method on my view and Publishing the values. My sample code project is on a public GitHub repository here. https://github.com/SimplyKyra/CodeAttempts Right now I have an issue as when I set the variables in the async method I'm getting the following error: Publishing changes from background threads is not allowed; make sure to publish values from the main thread (via operators like receive(on:)) on model updates. Solutions online seem to fix this issue by updating the value on the @mainActor thread but I want these methods to run asynchronously AND update the user on what's happening. What's the best way to update my variables from this location?
Posted Last updated
.
Post not yet marked as solved
1 Replies
882 Views
I have a multiplatform app that I'm coding that uses HealthKit. To get it working I needed to add a custom entitlement to the entitlements file. Specifically "application-identifier". See this solved question for more information: https://developer.apple.com/forums/thread/713829 Now I can only run the app on my simulators and NOT on my phone or Mac as the automatic signing is failing Provisioning profile "iOS Team Provisioning Profile: myName.AppName" doesn't match the entitlements file's value for the application-identifier entitlement. It says to submit a bug report: Automatic signing failed. Xcode failed to provision this target. Please file a bug report at <https://feedbackassistant.apple.com> and include the Update Signing report from the Report navigator. Which I did FB11512832, but is there something I can do to fix this or is it just a wait and see? Error image:
Posted Last updated
.
Post marked as solved
1 Replies
1.3k Views
Hey, I'm coding my app in the Xcode Beta 2 and am attempting to access the HKHealthStore() to add a HKCategorySample. When I run the app and attempt to add the sample I get the following error: Error Domain=com.apple.healthkit Code=4 "Missing com.apple.developer.healthkit entitlement." UserInfo={NSLocalizedDescription=Missing com.apple.developer.healthkit entitlement.} When I make sure to requestAuthorization before running the code I get a different error: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSHealthShareUsageDescription must be set in the app's Info.plist in order to request read authorization for the following types: HKCategoryTypeIdentifierMindfulSession' I'm assuming I need to add to my Info.plist but am unable to figure out how. If I go to my project or project's target and access Build Settings I see the following image: But am unable to edit it. I assuming I want to add NSHealthShareUsageDescription with a String explanation for why I want access but anything I find online is for an older Xcode so I don't know how to do it. Any help to get this working would be really appreciated. Thank you
Posted Last updated
.
Post not yet marked as solved
2 Replies
1k Views
I'm creating a multiplatform app on the Beta Xcode and have just migrated code over to set an image from the photo library. When I run the app on my iPad (with beta OS) it works fine. When running the same code on the iOS simulator I end up with a blank view without any images. There are a lot of errors outputted to the console starting with: 2022-07-12 09:59:46.037994-0700 MyAppName[10647:2080202] [UIFocus] TtGC7SwiftUI14_UIHostingViewVS_7AnyView implements focusItemsInRect: - caching for linear focus movement is limited as long as this view is on screen. objc[10647]: Class _EXRunningExtension is implemented in both myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x7ff864a43f90) and myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x1231e5d48). One of the two will be used. Which one is undefined. objc[10647]: Class EXConcreteExtension is implemented in both myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x7ff864a43fe0) and myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x1231e5d98). One of the two will be used. Which one is undefined. objc[10647]: Class EXExtensionPointCatalog is implemented in both myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x7ff864a44030) and myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x1231e5de8). One of the two will be used. Which one is undefined. and ending with: objc[10647]: Class _EXSceneSessionConnectionResponse is implemented in both myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x7ff864a45250) and myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x1231e7008). One of the two will be used. Which one is undefined. objc[10647]: Class EXService_Subsystem is implemented in both myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x7ff864a452a0) and myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x1231e7058). One of the two will be used. Which one is undefined. objc[10647]: Class _EXConnectionHandlerExtension is implemented in both myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x7ff864a45318) and myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x1231e70d0). One of the two will be used. Which one is undefined. objc[10647]: Class EXXPCUtil is implemented in both myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x7ff864a45340) and myPathway/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/ExtensionFoundation.framework/ExtensionFoundation (0x1231e70f8). One of the two will be used. Which one is undefined. 2022-07-12 09:59:47.154471-0700 MyAppName[10647:2080475] [NSExtension] Unable to setup extension context - error: Couldn’t communicate with a helper application. 2022-07-12 09:59:47.154654-0700 MyAppName[10647:2080349] [NSExtension] Async Begin using error: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.mobileslideshow.photo-picker.apple-extension-service" UserInfo={NSDebugDescription=connection to service named com.apple.mobileslideshow.photo-picker.apple-extension-service} 2022-07-12 09:59:47.154847-0700 MyAppName[10647:2080202] UIImagePickerController UIViewController create error: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.mobileslideshow.photo-picker.apple-extension-service" UserInfo={NSDebugDescription=connection to service named com.apple.mobileslideshow.photo-picker.apple-extension-service} I guess I'm wondering if someone else came across this and how you fixed it. Is it an error on my side or the beta software?
Posted Last updated
.
Post not yet marked as solved
1 Replies
694 Views
Hi, I'm creating a SwiftUI MacOS app with a NavigationSplitView consisting of a Sidebar and Detail. It works great; however, whenever I ran the app the sidebar is hidden. As a user I can easily click the button or menu option to bring it back BUT it's frustrating to do AND I need to test the app now. Is there a way to have it open by default when running the app or, at least, programmatically so I can set it as a user default? And/Or a way to make it visible when running UITests? Thanks
Posted Last updated
.