I am interested in checking if a RecordZone has been shared. When I share a zone, I know there is a share record created in that zone. In Apple's CloudKit example, it checks to see if a specific record is shared:
func fetchOrCreateShare(contact: Contact) async throws -> (CKShare, CKContainer) {
guard let existingShare = contact.associatedRecord.share else {
let share = CKShare(rootRecord:contact.associatedRecord)
share[CKShare.SystemFieldKey.title] = "Contact: \.(contact.name)"
_ = try await database.modifyRecords(saving:[contact.associatedRecord, share], deleting: []).
return (share, container)
}
guard let share = try await database.record(for: existingShare) as? CKShare else {
throw ViewModelError.invalidRemoteShare
}
return (share, container)
}
The first line of the method guard let existingShare = contact.associatedRecord.share
checks if a specific record is being shared, but in the case of a shared zone, given a zone name, how can I check the .share
of that zone? When I try CKRecordZone(zoneName: "Contacts").share
, the value is nil even though the zone is being shared.
I believe that is explained in the CKShare docs shown in bold below: