CloudKit is not synchronizing with coredata for relationships

In core-data I have a contact and location entity. I have one-to-many relationship from contact to locations and one-to-one from location to contact. I create contact in a seperate view and save it. Later I create a location, fetch the created contact, and save it while specifying the relationship between location and contact contact and test if it actually did it and it works.


   viewContext.perform {
        do {
            // Set relationship using the generated accessor method
            currentContact.addToLocations(location)

            try viewContext.save()
            
            print("Saved successfully. Locations count:", currentContact.locations?.count ?? 0)
            
            if let locs = currentContact.locations {
                print("📍 Contact has \(locs.count) locations.")
                for loc in locs {
                    print("➡️ Location: \(String(describing: (loc as AnyObject).locationName ?? "Unnamed"))")
                }
            }

            
        } catch {
            
            print("Failed to save location: \(error.localizedDescription)")
        }

    }

In my NSManagedObject class properties I have this : for Contact:

      @NSManaged public var locations: NSSet?

for Location:

     @NSManaged public var contact: Contact?

in my persistenceController I have:

for desc in [publicStore, privateStore] {
            desc.setOption(true as NSNumber, forKey: 

NSPersistentStoreRemoteChangeNotificationPostOptionKey)
            desc.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey)
            desc.setOption(true as NSNumber, forKey: NSMigratePersistentStoresAutomaticallyOption)
            desc.setOption(true as NSNumber, forKey: NSInferMappingModelAutomaticallyOption)
            desc.setOption(true as NSNumber, forKey: "CKSyncCoreDataDebug") // Optional: Debug sync
            
            // Add these critical options for relationship sync
            desc.setOption(true as NSNumber, forKey: "NSPersistentStoreCloudKitEnforceRecordExistsKey")
            desc.setOption(true as NSNumber, forKey: "NSPersistentStoreCloudKitMaintainReferentialIntegrityKey")
            
            // Add this specific option to force schema update
            desc.setOption(true as NSNumber, forKey: "NSPersistentStoreRemoteStoreUseCloudKitSchemaKey")
        }

When synchronization happens on CloudKit side, it creates CKRecords: CD_Contact and CD_Location. However for CD_Location it creates the relationship CD_contact as a string and references the CD_Contact. This I thought should have come as REFERENCE On the CD_Contact there is no CD_locations field at all. I do see the relationships being printed on coredata side but it does not come as REFERENCE on cloudkit. Spent over a day on this. Is this normal, what am I doing wrong here? Can someone advise?

CloudKit is not synchronizing with coredata for relationships
 
 
Q