Невозможно получить зоны записи из общей базы данных
let share = CKShare(rootRecord: infraRecord)
// save
let op: CKFetchShareParticipantsOperation = CKFetchShareParticipantsOperation(userIdentityLookupInfos: lookupInfos)
op.fetchShareParticipantsCompletionBlock = { error in
if let error = error {
print("error: ", error)
completion(false, error)
}
}
op.shareParticipantFetchedBlock = { participant in
participant.permission = .readOnly
share.addParticipant(participant)
let modOp: CKModifyRecordsOperation = CKModifyRecordsOperation(recordsToSave: [infraRecord, share], recordIDsToDelete: nil)
modOp.savePolicy = .ifServerRecordUnchanged
modOp.perRecordCompletionBlock = {record, error in
print("record completion \(record) and \(String(describing: error))")
}
modOp.modifyRecordsCompletionBlock = {records, recordIDs, error in
if let error = error {
print("error in modifying the records: ", error)
}
else if let anURL = share.url {
// update the location CKRecord with share URL
self.updateLocationPublicRecord(withShareUrl: anURL.absoluteString, locationRecord: locationRecord, completion: { (status, error) in
if let error = error {
print("error: ", error)
}
})
print("share url \(String(describing: share.url))")
}
completion(true, nil)
}
self.privateDB?.add(modOp)
//completion(true, nil)
}
self.defaultContainer?.add(op)
Чтобы получить доступ к общему ресурсу, я сначала пытаюсь получить зоны записи из общей базы данных
Code Block
func getRecordZones(completion: @escaping (CKRecordZoneID?, Error?) -> Void) {
self.sharedDB?.fetchAllRecordZones(completionHandler: { (ckrecordZones, error) in
guard error == nil else {
if let ckError = error as? CKError {
self.aErrorHandler.handleCkError(ckerror: ckError)
}
completion (nil, error)
return
}
if let recordZones = ckrecordZones {
for i in 0 ..< recordZones.count{
// find the zone you want to query
if recordZones[i].zoneID.zoneName == Cloud.SharedZone.UserProfile.ZoneName {
completion (recordZones[i].zoneID, nil)
}
}
}
})
}
Я не получаю никаких записей из общей базы данных. Когда я перехожу на панель управления Cloudkit, я не вижу общих зон в общей базе данных. Почему эта зона общей записи не существует даже после того, как URL-адрес общего доступа был указан и CKShare работал? Как заставить это работать?