Search results for

“SwiftData inheritance relationship”

4,980 results found

Post

Replies

Boosts

Views

Activity

Reply to Slow rendering List backed by SwiftData @Query
So basically, could I build the Photos app (or something like it) in SwiftData. Seems to be no. Because Query cannot handle anything remotely close to the thousands of displayed objects. I tested a manual fetch on context. Performed in milliseconds as expected. But anything in Query, completely fails with like 10 seconds when it gets bad
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Jan ’26
Using Observations with SwiftData @Model
I want to use the Observations AsyncSequence on some SwiftData @Model instances to determine if internal calculations need to be done. When a simple property is linked to the Observations it fires CONTINUOUSLY even though no change is made to the model property. Also, when I try to observe a property which is a list of another @Model type the Observations sequence does not fire when I add or remove items. I am hoping to use the async-algorithm's merge function so all the associated sequences can be combined since if any of the associated events should fire the calculation event.
4
0
2.8k
Jan ’26
Reply to Persisting User Settings with SwiftData
I'd like to comment the second question a bit, as it hasn't been addressed yet: Sometimes when running on a new device it will create a second UserSettings while it is waiting for the original one to sync from CloudKit. When you use SwiftData + CloudKit, under the hood, the framework uses NSPersistentCloudKitContainer to synchronize data. In that environment, duplicate data is sometimes inevitable, which is discussed in great details in the following section: Remove duplicate data The solution is to de-duplicate the data. How to do so is discussed and demonstrated in the sample code. Back to what to what you intent to achieve, my suggestion will be: If you plan to use SwiftData + CloudKit extensively in your app, you might need to handle duplicate data anyway. In this case, persisting user settings to your SwiftData store (and Synchronizing them via NSPersistentCloudKitContainer) makes a lot of sense. If the target is as simple as saving some Cloud-based user settings, I'd probably
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Jan ’26
Persisting User Settings with SwiftData
I was wondering what the recommended way is to persist user settings with SwiftData? It seems the SwiftData API is focused around querying for multiple objects, but what if you just want one UserSettings object that is persisted across devices say for example to store the user's age or sorting preferences. Do we just create one object and then query for it or is there a better way of doing this? Right now I am just creating: import SwiftData @Model final class UserSettings { var age: Int = 0 var sortAtoZ: Bool = true init(age: Int = 0, sortAtoZ: Bool = true) { self.age = age self.sortAtoZ = sortAtoZ } } In my view I am doing as follows: import SwiftUI import SwiftData struct SettingsView: View { @Environment(.modelContext) var context @Query var settings: [UserSettings] var body: some View { ForEach(settings) { setting in let bSetting = Bindable(setting) Toggle(Sort A-Z, isOn: bSetting.sortAtoZ) TextField(Age, value: bSetting.age, format: .number) } .onAppear { if settings.
3
0
521
Jan ’26
Reply to Using Observations with SwiftData @Model
I am working on the real project. The changes to the list of @Model are still not being captured in the Observations. When I modify or add/remove from the list sometimes a property of the object that IS NOT changed shows as being changed. That property has exactly one setter call and is not linked to the edit, add, or remove code. When I tried to observe the list as a whole, I achieved a FATAL ERROR for illegal attempt to resolve a future for a relationship that doesn't have a cached value!
Topic: Programming Languages SubTopic: Swift Tags:
Jan ’26
Reply to Persisting User Settings with SwiftData
Thank you for your post. After reviewing it, I have a suggestion for using UserDefaults instead, in my modest opinion and without knowing all your requirements. If you intend to utilize SwiftData for this purpose, I recommend querying for the single instance of the model and binding it to your view. To achieve this, query for a single instance where a unique attribute, such as a stored value, matches a specific value. Retrieve the stored ID and use it in your filter to ensure that only one instance of the model is fetched and used within the view. To facilitate future debugging, you may also consider deleting the existing model from CloudKit to eliminate any potential duplicates in your container. This can be done from the CloudKit Dashboard. While UserDefaults may not be the most efficient solution for your specific requirements, I would be interested in understanding the reasons behind your decision to use SwiftData. Additionally, I would appreciate any recommendations from other developer
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Jan ’26
Reply to Best practice for centralizing SwiftData query logic and actions in an @Observable manager?
A SwiftData query (@Query) is currently tied to a SwiftUI view and relies on the modelContext environment value of the view. There is currently no way to use @Query outside of a SwiftUI view. To implement the query logics in a controller class, you basically need to to do the following with your own code: Fetch data using FetchDescriptor + ModelContext.fetch. Update the result set when relevant changes happen. To do step 2, assuming you are using the SwiftData default store, which is based on Core Data, you need to observe the notifications triggered by a store change (basically NSManagedObjectContextObjectsDidChange and .NSPersistentStoreRemoteChange), check if the change is relevant, and re-fetch the data set as needed. All these will be a bit involved, and yet have already implemented (as Query) on the framework side. I'd hence suggest that you file a feedback report to request an API that does what Query does but doesn't rely on SwiftUI – If you do so, please share your report ID here fo
Jan ’26
Reply to SwiftData @Model: Optional to-many relationship is never nil at runtime
SwiftData default store is based on Core Data. As a historical implementation detail, at runtime, a Core Data to-many relationship, once persisted, is always a [], and never a nil. To adapt this behavior in an effective way, SwiftData always initializes a nil to-many relationship with an empty collection at runtime. So to your first question, the behavior that optional to-many relationships in SwiftData are never nil at runtime is as-designed. The requirement that relationships must be optional is a way to express that NSPersistentCloudKitContainer does not handle relationships atomically, and is enforced by a schema validator at compile time. The validation doesn't have any impact at runtime, and so SwiftData to-many relationships being [] at runtime doesn't break the CloudKit synchronization. To use SwiftData + CloudKit, you make sure your model schema is compatible with the rules so the schema validator doesn
Jan ’26
SwiftData @Model: Optional to-many relationship is never nil at runtime
Hi all, I’m trying to understand SwiftData’s runtime semantics around optional to-many relationships, especially in the context of CloudKit-backed models. I ran into behavior that surprised me, and I’d like to confirm whether this is intended design or a potential issue / undocumented behavior. Minimal example import SwiftUI import SwiftData @Model class Node { var children: [Node]? = nil var parent: Node? = nil init(children: [Node]? = nil, parent: Node? = nil) { self.children = children self.parent = parent print(self.children == nil) } } struct ContentView: View { var body: some View { Button(Create) { _ = Node(children: nil) } } } Observed behavior If @Model is not used, children == nil prints true as expected. If @Model is used, children == nil prints false. Inspecting the macro expansion, it appears SwiftData initializes relationship storage using backing data placeholders and normalizes to-many relationships into empty collections at runtime, even w
1
0
370
Jan ’26
Family Controls Entitlement Stuck in "Submitted" Status for Shield Extension - 2+ Weeks
Hello, I'm experiencing a significant delay getting the Family Controls entitlement approved for my Shield Configuration Extension, and I'm hoping someone here can help or has experienced something similar. Background: I'm developing an app that uses the Screen Time API with Family Controls. My main app bundle (lukedev.Bloka) was approved for Family Controls (Distribution) and works perfectly. The Problem My Shield Configuration Extension (lukedev.Bloka.Shield) has been stuck waiting for approval for over 2 weeks: Request ID: 6C8LD22UVM Submitted: November 20, 2025 Status: Still Submitted Current State: Only shows Family Controls (Development) in capabilities What I've Tried ✅ Submitted entitlement request via the proper channels ✅ Contacted Apple Developer Support (case #102762028251) ✅ Verified the main app has full Family Controls approval ✅ Deleted and regenerated all provisioning profiles multiple times ✅ Confirmed the App ID configuration is correct in the Developer Portal The Issue Without Family Contr
1
0
231
Jan ’26
Reply to Inability to Communicate via APDU on iOS Despite NFC Tag Detection
You can't switch sessions once connected, but you can connect to an NDEF tag by using NFCTagReaderSession and do both NDEF and non-NDEF actions. Because NFCISO7816Tag inherits from NFCNDEFTag it gains all its capabilities and then adds more specific functionality. If a NFCTag returned from a NFCTagReaderSession supports NDEF, NDEF operations (query NDEF status, write and read NDEF) are performed internally, and the NDEF data should be available as properties in the same NFCTagReaderSession.
Topic: App & System Services SubTopic: Core OS Tags:
Jan ’26
Reply to Tahoe 26.2 breaks printing with PaperCut
So, looking at things from our side, I'm not sure. I found one bug on this (r.166518515) about accessing a custom directory (/Library//), but the analysis of the engineering team is that it isn't a bug in macOS 26.2... because it shouldn't work in macOS 26.0 EITHER. More specifically, it should only be accessing one of these documented directories: 2. Writing of files: pursuant to normal UNIX file permissions, filters and backends can read/write files to the cache directory specified by the CUPS_CACHEDIR environment variable, to the state directory specified by the CUPS_STATEDIR environment variable, to the temporary directory specified by the TMPDIR environment variable, and under the /private/var/db, /private/var/folders, /private/var/lib, /private/var/mysql, /private/var/run, /private/var/spool (except /private/var/spool/cups), /Library/Application Support, /Library/Caches, /Library/Logs, /Library/Preferences, /Library/WebServer, and /Users/Shared directories. FYI, that does suggest a possible workaround
Topic: App & System Services SubTopic: General Tags:
Jan ’26
UserSendCDB fails due to permissions
I created a custom class that inherits from IOUserSCSIPeripheralDeviceType00 in the DriverKit SCSIPeripheralsDriverKit framework. When I attempted to send a vendor-specific command to a USB storage device using the UserSendCDB function of this class instance, the function returned the error: kIOReturnNotPrivileged (iokit_common_err(0x2c1)) // privilege violation However, when using UserSendCDB in the same way to issue standard SCSI commands such as INQUIRY or Test Unit Ready, no error occurred and the returned sense data was valid. Why is UserSendCDB able to send standard SCSI commands successfully, but vendor-specific commands return kIOReturnNotPrivileged? Is there any required entitlement, DriverKit capability, or implementation detail needed to allow vendor-specific CDBs? Below are the entitlements of my DriverKit extension: com.apple.developer.driverkit.transport.usb idVendor [number of vendorid] com.apple.developer.driverkit com.apple.developer.driverkit.allow-any-userclient-access com.a
3
0
367
Jan ’26
Reply to Slow rendering List backed by SwiftData @Query
So basically, could I build the Photos app (or something like it) in SwiftData. Seems to be no. Because Query cannot handle anything remotely close to the thousands of displayed objects. I tested a manual fetch on context. Performed in milliseconds as expected. But anything in Query, completely fails with like 10 seconds when it gets bad
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jan ’26
Using Observations with SwiftData @Model
I want to use the Observations AsyncSequence on some SwiftData @Model instances to determine if internal calculations need to be done. When a simple property is linked to the Observations it fires CONTINUOUSLY even though no change is made to the model property. Also, when I try to observe a property which is a list of another @Model type the Observations sequence does not fire when I add or remove items. I am hoping to use the async-algorithm's merge function so all the associated sequences can be combined since if any of the associated events should fire the calculation event.
Replies
4
Boosts
0
Views
2.8k
Activity
Jan ’26
Reply to Persisting User Settings with SwiftData
I'd like to comment the second question a bit, as it hasn't been addressed yet: Sometimes when running on a new device it will create a second UserSettings while it is waiting for the original one to sync from CloudKit. When you use SwiftData + CloudKit, under the hood, the framework uses NSPersistentCloudKitContainer to synchronize data. In that environment, duplicate data is sometimes inevitable, which is discussed in great details in the following section: Remove duplicate data The solution is to de-duplicate the data. How to do so is discussed and demonstrated in the sample code. Back to what to what you intent to achieve, my suggestion will be: If you plan to use SwiftData + CloudKit extensively in your app, you might need to handle duplicate data anyway. In this case, persisting user settings to your SwiftData store (and Synchronizing them via NSPersistentCloudKitContainer) makes a lot of sense. If the target is as simple as saving some Cloud-based user settings, I'd probably
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jan ’26
Persisting User Settings with SwiftData
I was wondering what the recommended way is to persist user settings with SwiftData? It seems the SwiftData API is focused around querying for multiple objects, but what if you just want one UserSettings object that is persisted across devices say for example to store the user's age or sorting preferences. Do we just create one object and then query for it or is there a better way of doing this? Right now I am just creating: import SwiftData @Model final class UserSettings { var age: Int = 0 var sortAtoZ: Bool = true init(age: Int = 0, sortAtoZ: Bool = true) { self.age = age self.sortAtoZ = sortAtoZ } } In my view I am doing as follows: import SwiftUI import SwiftData struct SettingsView: View { @Environment(.modelContext) var context @Query var settings: [UserSettings] var body: some View { ForEach(settings) { setting in let bSetting = Bindable(setting) Toggle(Sort A-Z, isOn: bSetting.sortAtoZ) TextField(Age, value: bSetting.age, format: .number) } .onAppear { if settings.
Replies
3
Boosts
0
Views
521
Activity
Jan ’26
Reply to Using Observations with SwiftData @Model
I am working on the real project. The changes to the list of @Model are still not being captured in the Observations. When I modify or add/remove from the list sometimes a property of the object that IS NOT changed shows as being changed. That property has exactly one setter call and is not linked to the edit, add, or remove code. When I tried to observe the list as a whole, I achieved a FATAL ERROR for illegal attempt to resolve a future for a relationship that doesn't have a cached value!
Topic: Programming Languages SubTopic: Swift Tags:
Replies
Boosts
Views
Activity
Jan ’26
Reply to Persisting User Settings with SwiftData
Thank you for your post. After reviewing it, I have a suggestion for using UserDefaults instead, in my modest opinion and without knowing all your requirements. If you intend to utilize SwiftData for this purpose, I recommend querying for the single instance of the model and binding it to your view. To achieve this, query for a single instance where a unique attribute, such as a stored value, matches a specific value. Retrieve the stored ID and use it in your filter to ensure that only one instance of the model is fetched and used within the view. To facilitate future debugging, you may also consider deleting the existing model from CloudKit to eliminate any potential duplicates in your container. This can be done from the CloudKit Dashboard. While UserDefaults may not be the most efficient solution for your specific requirements, I would be interested in understanding the reasons behind your decision to use SwiftData. Additionally, I would appreciate any recommendations from other developer
Topic: UI Frameworks SubTopic: SwiftUI Tags:
Replies
Boosts
Views
Activity
Jan ’26
Reply to Best practice for centralizing SwiftData query logic and actions in an @Observable manager?
A SwiftData query (@Query) is currently tied to a SwiftUI view and relies on the modelContext environment value of the view. There is currently no way to use @Query outside of a SwiftUI view. To implement the query logics in a controller class, you basically need to to do the following with your own code: Fetch data using FetchDescriptor + ModelContext.fetch. Update the result set when relevant changes happen. To do step 2, assuming you are using the SwiftData default store, which is based on Core Data, you need to observe the notifications triggered by a store change (basically NSManagedObjectContextObjectsDidChange and .NSPersistentStoreRemoteChange), check if the change is relevant, and re-fetch the data set as needed. All these will be a bit involved, and yet have already implemented (as Query) on the framework side. I'd hence suggest that you file a feedback report to request an API that does what Query does but doesn't rely on SwiftUI – If you do so, please share your report ID here fo
Replies
Boosts
Views
Activity
Jan ’26
Reply to SwiftData @Model: Optional to-many relationship is never nil at runtime
SwiftData default store is based on Core Data. As a historical implementation detail, at runtime, a Core Data to-many relationship, once persisted, is always a [], and never a nil. To adapt this behavior in an effective way, SwiftData always initializes a nil to-many relationship with an empty collection at runtime. So to your first question, the behavior that optional to-many relationships in SwiftData are never nil at runtime is as-designed. The requirement that relationships must be optional is a way to express that NSPersistentCloudKitContainer does not handle relationships atomically, and is enforced by a schema validator at compile time. The validation doesn't have any impact at runtime, and so SwiftData to-many relationships being [] at runtime doesn't break the CloudKit synchronization. To use SwiftData + CloudKit, you make sure your model schema is compatible with the rules so the schema validator doesn
Replies
Boosts
Views
Activity
Jan ’26
SwiftData @Model: Optional to-many relationship is never nil at runtime
Hi all, I’m trying to understand SwiftData’s runtime semantics around optional to-many relationships, especially in the context of CloudKit-backed models. I ran into behavior that surprised me, and I’d like to confirm whether this is intended design or a potential issue / undocumented behavior. Minimal example import SwiftUI import SwiftData @Model class Node { var children: [Node]? = nil var parent: Node? = nil init(children: [Node]? = nil, parent: Node? = nil) { self.children = children self.parent = parent print(self.children == nil) } } struct ContentView: View { var body: some View { Button(Create) { _ = Node(children: nil) } } } Observed behavior If @Model is not used, children == nil prints true as expected. If @Model is used, children == nil prints false. Inspecting the macro expansion, it appears SwiftData initializes relationship storage using backing data placeholders and normalizes to-many relationships into empty collections at runtime, even w
Replies
1
Boosts
0
Views
370
Activity
Jan ’26
Family Controls Entitlement Stuck in "Submitted" Status for Shield Extension - 2+ Weeks
Hello, I'm experiencing a significant delay getting the Family Controls entitlement approved for my Shield Configuration Extension, and I'm hoping someone here can help or has experienced something similar. Background: I'm developing an app that uses the Screen Time API with Family Controls. My main app bundle (lukedev.Bloka) was approved for Family Controls (Distribution) and works perfectly. The Problem My Shield Configuration Extension (lukedev.Bloka.Shield) has been stuck waiting for approval for over 2 weeks: Request ID: 6C8LD22UVM Submitted: November 20, 2025 Status: Still Submitted Current State: Only shows Family Controls (Development) in capabilities What I've Tried ✅ Submitted entitlement request via the proper channels ✅ Contacted Apple Developer Support (case #102762028251) ✅ Verified the main app has full Family Controls approval ✅ Deleted and regenerated all provisioning profiles multiple times ✅ Confirmed the App ID configuration is correct in the Developer Portal The Issue Without Family Contr
Replies
1
Boosts
0
Views
231
Activity
Jan ’26
Reply to Inability to Communicate via APDU on iOS Despite NFC Tag Detection
You can't switch sessions once connected, but you can connect to an NDEF tag by using NFCTagReaderSession and do both NDEF and non-NDEF actions. Because NFCISO7816Tag inherits from NFCNDEFTag it gains all its capabilities and then adds more specific functionality. If a NFCTag returned from a NFCTagReaderSession supports NDEF, NDEF operations (query NDEF status, write and read NDEF) are performed internally, and the NDEF data should be available as properties in the same NFCTagReaderSession.
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’26
SwiftData Migration: Why no explicit ETL?
When I used to do Migrations, I always used ETL and then push to a dev system to review/test before going production. The migration support is SwiftData is fine for a little tweak. I might as well just just use new schema and context and write the custom code than use the SwiftData migration support.
Replies
3
Boosts
0
Views
262
Activity
Jan ’26
Reply to SwiftData Migration: Why no explicit ETL?
Sorry, ETL is Extract (which means to pull the data from the source system to another system for mapping Transform: Transform the data Load: Push transformed data to the target system Typical migration method. SwiftData migration does not follow this pattern.
Replies
Boosts
Views
Activity
Jan ’26
Reply to Tahoe 26.2 breaks printing with PaperCut
So, looking at things from our side, I'm not sure. I found one bug on this (r.166518515) about accessing a custom directory (/Library//), but the analysis of the engineering team is that it isn't a bug in macOS 26.2... because it shouldn't work in macOS 26.0 EITHER. More specifically, it should only be accessing one of these documented directories: 2. Writing of files: pursuant to normal UNIX file permissions, filters and backends can read/write files to the cache directory specified by the CUPS_CACHEDIR environment variable, to the state directory specified by the CUPS_STATEDIR environment variable, to the temporary directory specified by the TMPDIR environment variable, and under the /private/var/db, /private/var/folders, /private/var/lib, /private/var/mysql, /private/var/run, /private/var/spool (except /private/var/spool/cups), /Library/Application Support, /Library/Caches, /Library/Logs, /Library/Preferences, /Library/WebServer, and /Users/Shared directories. FYI, that does suggest a possible workaround
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Jan ’26
UserSendCDB fails due to permissions
I created a custom class that inherits from IOUserSCSIPeripheralDeviceType00 in the DriverKit SCSIPeripheralsDriverKit framework. When I attempted to send a vendor-specific command to a USB storage device using the UserSendCDB function of this class instance, the function returned the error: kIOReturnNotPrivileged (iokit_common_err(0x2c1)) // privilege violation However, when using UserSendCDB in the same way to issue standard SCSI commands such as INQUIRY or Test Unit Ready, no error occurred and the returned sense data was valid. Why is UserSendCDB able to send standard SCSI commands successfully, but vendor-specific commands return kIOReturnNotPrivileged? Is there any required entitlement, DriverKit capability, or implementation detail needed to allow vendor-specific CDBs? Below are the entitlements of my DriverKit extension: com.apple.developer.driverkit.transport.usb idVendor [number of vendorid] com.apple.developer.driverkit com.apple.developer.driverkit.allow-any-userclient-access com.a
Replies
3
Boosts
0
Views
367
Activity
Jan ’26