Post

Replies

Boosts

Views

Activity

Widget reload not as good as Complication reload
I like to keep my apps watch face complication up to date when the user completes an activity but calling WidgetCenter.shared.reloadAllTimelines() is not working as well as the old complication update now I want to go back to complications. I used to call CLKComplicationServer.sharedInstance().reloadTimeline(for: <#T##CLKComplication#>) which would update my complication instantly. The simulator seams to up date widgets immediately but now my app has been released pn the App Store it is not updating. Any one else experiencing this.
4
4
2.5k
Aug ’23
CNSaveRequest without having a container assignment
Hi, When creating a new contact on MacOS Im getting this new error causing my app to crash, on my app only after updating my machine to Ventura 13.0. The last error before (lldb) is "An ABCDRecord is being saved without having a container assignment. Assigning the contact to <CNCDContainer 0x6000039b51a0 ab>. Please remember to assign contacts to containers to avoid recurring container lookup and contact re-validation costs." When saving a new contact I’m using  saveRequest.add(contact, toContainerWithIdentifier: nil)             do {                 try contactsStore.execute(saveRequest) ** I guess it does not like the nil. Am I supposed to add to a particular container, like iCloud? Documentation says to set it to nil - https://developer.apple.com/documentation/contacts/cnsaverequest/1403036-add Even with the most basic example from https://developer.apple.com/documentation/contacts the save request falis.
4
1
1.7k
Oct ’22
Ambiguous use of 'encode(_:forKey:)'
Hello, Im trying to save a custom object into coredata and it works fine on iOS but when trying to run the same code on the Mac Catalyst version of my app I get an error Ambiguous use of 'encode(_:forKey:)' I created a class for the object. I made it type NSObject & NSSecureCoding. I tried to make it encode and decode and save to CoreData with a transformer. Works on iOS version of my app but not macOS. Why is that? Ty
3
1
1.5k
Feb ’23
Core data Array and Conforming to NSSecureCoding
Hello, Ive been getting an error trying to store this type of array in my core data [CNLabeledValueCNPhoneNumber] [general] 'NSKeyedUnarchiveFromData' should not be used to for un-archiving and will be removed in a future release There are lost of posts on this error but I can't get mine to work with an array of phone numbers stored in core data. Please help if you can. I copied this Apple Project nearly exactly https://developer.apple.com/documentation/coredata/handling_different_data_types_in_core_data except where they have tintColor as the transformable attribute in their .xcdatamodel file, I have put phoneNumbers and the type transformable, the same as the Apple project and the transformer ColorToDataTransformer I made a copy of theirs but changed the occurrences of UIColor to [CNLabeledValueCNPhoneNumber] It didn't work. Here is the PhoneNumbersToDataTransformer I made } I tried changing allowedTopLevelClasses to } and a few other iterations of the same code. Ive been changing things for age trying to get it to work. The error is always something like this: [/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/Contacts.framework]\"\n)}'.\" UserInfo={NSDebugDescription=value for key '_value' was of unexpected class 'CNPhoneNumber (0x1ca088050) [/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/Contacts.framework]'. Allowed classes are '{(\n \"NSArray (0x1c9d1ab28) [/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/CoreFoundation.framework]\",\n \"CNLabeledValue (0x1ca082010) [/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/Contacts.framework]\"\n)}'.}"; } FETCH error [1]: https://developer.apple.com/documentation/coredata/handling_different_data_types_in_core_data
2
0
2.1k
Mar ’21
redacted(reason: .privacy) not working as expected
I am having a lot of trouble with this. My idea was going to be to put a switch in the setting page of my app so user can choose if they want sensitive information redacted or not. Some people may want to hide their appointment on the Lock Screen, others may not. .redacted(reason: .placeholder) works fine when I add it to an element. but the .privacy reason docent seam to work. If I add the capability to the target 'Data Protection' every thing on the widget gets redacted, unless I mark elements with .unredacted() But to have to do that for everything is too difficult. My thinking around how it worked was to add the modifier, redacted(reason: .privacy) to an element like a Text view or an image and if the device is locked that will be redacted. I must not have the same thinking as Apple on this process.
2
0
1.7k
Sep ’22
XCODE requesting access to save new contact Mac Catalyst
Im having trouble requesting access to save a new contact as of today with updating to Ventura 13.0 (22A380). Im requesting access to contacts using @IBAction func requestConactsAccess() {         CNContactStore().requestAccess(for: .contacts) { granted, error in             if granted {                 // Yes                 print("Granted")                 self.authStatusLabel.text = "Granted"             } else {                 // No                 print("Denied")                 self.authStatusLabel.text = "denied"             }         }     } But it is just being automatically denied. I can't save a contact either with an app that previously had permission. I created a small app to test this from scratch using the documentation "Working with the user’s contacts" https://developer.apple.com/documentation/contacts?language=objc I have been doing this since the first version of the app, Ive never had an issue Has something changed with regards to Requesting access to contacts in latest OS? https://developer.apple.com/documentation/contacts/requesting_authorization_to_access_contacts Thank you.
2
0
1k
Nov ’22
Update an Existing Xcode Project Core Data with CloudKit & Manage Multiple Stores
Hi, I have.a project that uses CoreData and I want to add some of the data to iCloud to sync with a Watch app and I ticked the option for the Default configuration to use iCloud and It worked but now I don't want to include images in the cloud because it became too large so I Seperated the images into a different data thing and as per instructions here https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit/setting_up_core_data_with_cloudkit I added a configuration "Local" and "Cloud" and change the code as below - original lazy var persistentContainer: NSPersistentContainer = { &#9;&#9;let container = NSPersistentContainer(name: "DataModel") &#9;&#9;container.loadPersistentStores(completionHandler: { &#9;&#9;&#9;&#9;storeDescription, error in &#9;&#9;&#9;&#9;if let error = error { &#9;&#9;&#9;&#9;&#9;&#9;print("Could load data store: \(error)") &#9;&#9;&#9;&#9; } &#9;&#9;}) &#9;&#9;print("Loaded data store: DataModel") &#9;&#9;return container }() I created two configurations as per the video and ticked use with iCloud on the one I would like to sync with iCloud. new code lazy var persistentContainer: NSPersistentContainer = { &#9;&#9;var container = NSPersistentContainer(name: "DataModel") &#9;&#9;if #available(iOS 13.0, *) { &#9;&#9;&#9;&#9;container = NSPersistentCloudKitContainer(name: "DataModel") &#9;&#9;&#9;&#9;let local = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/local.sqlite")) &#9;&#9;&#9;&#9;local.configuration = "Local" &#9;&#9;&#9;&#9;let cloud = NSPersistentStoreDescription(url: URL(fileURLWithPath: "/files/cloud.sqlite")) &#9;&#9;&#9;&#9;cloud.configuration = "Cloud" &#9;&#9;&#9;&#9;cloud.cloudKitContainerOptions = &#9;&#9;&#9;&#9;&#9;&#9;NSPersistentCloudKitContainerOptions( &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;containerIdentifier: "iCloud.com.AppName") &#9;&#9;&#9;&#9;container.persistentStoreDescriptions = [ local, cloud ] &#9;&#9;&#9;&#9;container.loadPersistentStores { storeDescription, error in &#9;&#9;&#9;&#9;&#9;&#9;guard error == nil else { &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;fatalError("Could not load persistent stores. \(error!)") &#9;&#9;&#9;&#9;&#9;&#9;} &#9;&#9;&#9;&#9;} &#9;&#9;&#9;&#9;return container &#9;&#9;} else { &#9;&#9;&#9;&#9;container.loadPersistentStores(completionHandler: { &#9;&#9;&#9;&#9;&#9;&#9;storeDescription, error in &#9;&#9;&#9;&#9;&#9;&#9;if let error = error { &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;print("Could load data store: \(error)") &#9;&#9;&#9;&#9;&#9;&#9;} &#9;&#9;&#9;&#9;}) &#9;&#9;&#9;&#9;print("Loaded data store: DataModel") &#9;&#9;&#9;&#9;return container &#9;&#9;} }() Most of this code I got from the video https://developer.apple.com/videos/play/wwdc2019/202/ but I keep getting an error about loading or saving the persistent store or something fatal error: Could not load persistent stores. Error Domain=NSCocoaErrorDomain Code=512 "The file couldn’t be saved." UserInfo={reason=Failed to create file; code = 2}: Is anyone able to point out what I am not doing right? Thanks.
1
0
1.5k
Aug ’21
WidgetKit error on configurable widget
I am creating a widget that has configurable content and I'm getting this error on the Mac OS when running the WidgetExtension in the Mac WidgetKit Simulator The operation could not be completed. (CHSErrorDomain error 1101.) I must be missing something somewhere, all my other widgets are working fine, but with the dynamic widget where the user can edit the widget, when coding in the swift file I'm always getting warnings that appear then disappear about Cannot find type 'DynamicPersonSelectionIntent' in scope When I build it goes away. I have added DynamicPersonSelection.intentdefinition. I have an IntentHandler.swift with an IntentHandler: DynamicPersonSelectionIntentHandling. In the Target Intent handler I have added the supported Intent, In the framework section is the Intents.framework. I have check all the Tagret memberships I think. The widget works sometimes? on the iPhone but not on the Mac at all. On the iPhone its usually blank until I add it to the Home Screen. Can work out where the issue is, Ive tried various iterations of Placeholder, Snapshot and Timeline. The issues seams to be because of the IntentTimelineProvider, with a TimelineProvider and static content everything woks fine . I must be missing something. Please help if you can.
1
0
1k
Mar ’21
ITMS-90892: Missing recommended icon error from Apple App Store
I get this error when submitting my app to the App Store recently. . ITMS-90892: Missing recommended icon - The bundle does not contain an alternate app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro. To support older operating systems, the icon may be required in the bundle outside of an asset catalog. Make sure the Info.plist file includes appropriate entries referencing the file. See ... It's related to the alternate icons in the app structure and the names I think but has nothing to do with the assets catalog. In my app a user can choose and icon for the Home Screen. I have 4 icons to choose and 4 sizes for each icon named e.g. - AA_appIcon@2x AA_appIcon@2x~iPad AA_appIcon@3x AA_appIcon83.5@2x~iPad and it used to work fine, but now I get this error for the one name AA_appIcon83.5@2x~iPad. It is in the correct size 167x167, so not sure what the problem is. It just happen in the last few days, didn't happen on my previous submission a month ago. The naming format must have recently changed or something. Is anyone able to spot the error? This is the info.plist <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleAlternateIcons</key> <dict> <key>AA</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AA_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> <key>Cake</key> <dict> <key>CFBundleIconFiles</key> <array> <string>Cake_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> <key>NA</key> <dict> <key>CFBundleIconFiles</key> <array> <string>NA_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> <key>OA</key> <dict> <key>CFBundleIconFiles</key> <array> <string>OA_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> </dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>Cake_appIcon</string> </array> <key>UIPrerenderedIcon</key> <false/> </dict> </dict> </plist> ```<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleAlternateIcons</key> <dict> <key>AA</key> <dict> <key>CFBundleIconFiles</key> <array> <string>AA_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> <key>Cake</key> <dict> <key>CFBundleIconFiles</key> <array> <string>Cake_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> <key>NA</key> <dict> <key>CFBundleIconFiles</key> <array> <string>NA_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> <key>OA</key> <dict> <key>CFBundleIconFiles</key> <array> <string>OA_appIcon</string> </array> <key>UIPrerenderedIcon</key> <string>No</string> </dict> </dict> <key>CFBundlePrimaryIcon</key> <dict> <key>CFBundleIconFiles</key> <array> <string>Cake_appIcon</string> </array> <key>UIPrerenderedIcon</key> <false/> </dict> </dict> </plist>
1
0
2.4k
Jul ’21
Create subscription calendar cal.ical from my app with url
Hello, In the calendar app people can subscribe to calendars from the web and have the events in the calendar, but can my Xcode app generate a local url with an ical file that can be subscribed to? Just for the user on the device with the app, not on the internet? For example my app when run creates an ical file of events that repeat each year, like international days of the year and puts it somewhere like in the group folder or somewhere behind the scenes and then the user can click that link from within the app or copy and past it into the calendar app by adding a new calendar and putting in the url? I don't want to put the url online because the information is private and just for the user of the device.
1
0
1.6k
Feb ’22
Xcode Mac Catalyst Share Extension import problem
When I setup Share extension or Action extension on iOS to import a Vcard into my app it works great but when running the app on Mac catalyst I'm left with a Vcard at the bottom of my screen and I can't close it or do anything, deleting the app and reinstalling doesn't even fix it, I'm going to have to format my computer. How do I deal with these? the just keep building up, How do I make sure my app doesn't do this? How do I close the ones that are open, I'm stuck. Theres a few things I tried. The .plist option to 'Supports Document Browser' is set to 'No' 'Supports opening documents in place' has to be se to 'Yes' or not included for a Mac Catalyst app or I get this error - error: 'LSSupportsOpeningDocumentsInPlace = NO' is not supported on macOS. Either remove the entry or set it to YES, and also ensure that the application does open documents in place on macOS. What I'm thinking is I did not ensure that the app did not open a document in place? Now I have no idea how to undo what I've done. Its just stuck there, attached to my app somehow. I tried deleting the app and all the files associated to the app I could find, but its still there. How do I prevent this from happening but still get all the card info into my app. it does work to populate the card info into my app, its just this thing here is not closing or I don't want that to happen, that's probably what the error is warning me about.
1
0
1k
Sep ’21
NSUbiquitousKeyValueStore shared between Apple Watch and iPhone app
Hello, Ive found in watchOS 9 NSUbiquitousKeyValueStore is available and I'm wondering if using the same cloud kit container should the value be the same across devices. It currently works between Mac and iPhone apps, but not between Watch and iPhone. I have a switch on Apple Watch if #available(watchOS 9.0, *) { Toggle("Use iCloud", isOn: $dontUseiCloud) .onChange(of: dontUseiCloud) { value in changeiCloudSetting(value)              print("Toggle value = \(value)")              print("Dont use icloud =  \(NSUbiquitousKeyValueStore.default.bool(forKey: "dontUseICloud"))")           }      } }.onAppear(perform: {if #available(watchOS 9.0, *) {isiCloudOn()}}) and when I toggle the switch the Key-Value store changes correctly but only for the Watch. The switch on the iPhone app docent change, even if I wait up to 5 minutes. I have the same code in my iPhone app and Mac app and the switch change happens almost immediacy through iCloud on both devices. Thanks
1
0
1.3k
Sep ’22
Fetch data from WatchOS CoreData for WatchOS 9 widget with an App Group
Ive added App Group entitlements to my Watch target and Watch Widget target to hopefully create a container both the CoreData for the Watch app and the Widget can draw from. I put the CoreData object in there for hopefully both the Watch App and WatchOS 9 widget to access. let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.my-company.my-app")! let storeURL = containerURL.appendingPathComponent("DataModel.sqlite") let description = NSPersistentStoreDescription(url: storeURL) let container = NSPersistentContainer(name: "DataModel") container.persistentStoreDescriptions = [description] container.loadPersistentStores { ... } Following posts in StackExchange Its been working for iOS App and Widget. It works wonderfully for iOS apps and their widgets. Would this be identical for WatchOS apps and Widgets? However when I use the same implementation for WatchOS and Watch widgets it fails to fetch the data giving an error : WidgetsExtension[75018:10584043] [error] error: No NSEntityDescriptions in any model claim the NSManagedObject subclass 'MyContactCard' so +entity is confused.  Have you loaded your NSManagedObjectModel yet ? 'executeFetchRequest:error: A fetch request must have an entity.' The exact same widget files works on iOS. EDIT: IT STARTED WORKING after I posted this. My have just been an error with the Core data models or something. Just leave this here so others can know that it does work same as iOS widgets
1
0
1.1k
Sep ’22
Minimum deployments XCODE 14.0.1 (14A400)
hello, Im struggling with the Minimum deployments section in Xcode 14 for the Target of my iOS and Mac Catalyst app. Its a bit different from what I'm used, previously I could look at the values in a drop down box. That values I would like to set are iOS 12.4 and MacOS 11.0. What is macOS 14.2 ? it that a catalyst number, What macOS is that? Nevermind I found this - macCatalyst 13.0 = macOS 10.15 macCatalyst 13.4 = macOS 10.15.4 macCatalyst 14.0 = macOS 11.0 macCatalyst 14.7 = macOS 11.6 macCatalyst 15.0 = macOS 12.0 macCatalyst 15.3 = macOS 12.2 and 12.2.1 macCatalyst 15.4 = macOS 12.3 macCatalyst 15.5 = macOS 12.4 macCatalyst 15.6 = macOS 12.5 How do I delete a question?
1
0
1.7k
Dec ’23