Fix concurrency warnings.

This commit is contained in:
Brent Simmons 2024-04-19 22:17:02 -07:00
parent 24c8bdcc1a
commit ee466170c8
3 changed files with 8 additions and 25 deletions

View File

@ -31,8 +31,8 @@ import CloudKitExtras
self.articlesZone = articlesZone
}
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey]) async throws {
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey], completion: @escaping (Result<Void, Error>) -> Void) {
for deletedRecordKey in deleted {
switch deletedRecordKey.recordType {
case CloudKitAccountZone.CloudKitFeed.recordType:
@ -43,7 +43,7 @@ import CloudKitExtras
assertionFailure("Unknown record type: \(deletedRecordKey.recordType)")
}
}
for changedRecord in changed {
switch changedRecord.recordType {
case CloudKitAccountZone.CloudKitFeed.recordType:
@ -54,6 +54,8 @@ import CloudKitExtras
assertionFailure("Unknown record type: \(changedRecord.recordType)")
}
}
completion(.success())
}
func addOrUpdateFeed(_ record: CKRecord) {

View File

@ -32,21 +32,7 @@ class CloudKitArticlesZoneDelegate: CloudKitZoneDelegate {
self.articlesZone = articlesZone
}
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey]) async throws {
try await withCheckedThrowingContinuation { continuation in
self.cloudKitDidModify(changed: changed, deleted: deleted) { result in
switch result {
case .success:
continuation.resume()
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}
private func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey], completion: @escaping (Result<Void, Error>) -> Void) {
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey], completion: @escaping (Result<Void, Error>) -> Void) {
Task { @MainActor in
do {

View File

@ -29,7 +29,7 @@ public enum CloudKitZoneError: LocalizedError {
public protocol CloudKitZoneDelegate: AnyObject {
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey]) async throws
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey], completion: @escaping (Result<Void, Error>) -> Void)
}
public typealias CloudKitRecordKey = (recordType: CKRecord.RecordType, recordID: CKRecord.ID)
@ -1046,12 +1046,7 @@ public protocol CloudKitZone: AnyObject {
switch result {
case .success:
do {
try await self.delegate?.cloudKitDidModify(changed: changedRecords, deleted: deletedRecordKeys)
completion(.success(()))
} catch {
completion(.failure(error))
}
self.delegate?.cloudKitDidModify(changed: changedRecords, deleted: deletedRecordKeys, completion: completion)
case .failure(let error):