Fix concurrency warnings.
This commit is contained in:
parent
24c8bdcc1a
commit
ee466170c8
@ -31,8 +31,8 @@ import CloudKitExtras
|
|||||||
self.articlesZone = articlesZone
|
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 {
|
for deletedRecordKey in deleted {
|
||||||
switch deletedRecordKey.recordType {
|
switch deletedRecordKey.recordType {
|
||||||
case CloudKitAccountZone.CloudKitFeed.recordType:
|
case CloudKitAccountZone.CloudKitFeed.recordType:
|
||||||
@ -43,7 +43,7 @@ import CloudKitExtras
|
|||||||
assertionFailure("Unknown record type: \(deletedRecordKey.recordType)")
|
assertionFailure("Unknown record type: \(deletedRecordKey.recordType)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for changedRecord in changed {
|
for changedRecord in changed {
|
||||||
switch changedRecord.recordType {
|
switch changedRecord.recordType {
|
||||||
case CloudKitAccountZone.CloudKitFeed.recordType:
|
case CloudKitAccountZone.CloudKitFeed.recordType:
|
||||||
@ -54,6 +54,8 @@ import CloudKitExtras
|
|||||||
assertionFailure("Unknown record type: \(changedRecord.recordType)")
|
assertionFailure("Unknown record type: \(changedRecord.recordType)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
completion(.success())
|
||||||
}
|
}
|
||||||
|
|
||||||
func addOrUpdateFeed(_ record: CKRecord) {
|
func addOrUpdateFeed(_ record: CKRecord) {
|
||||||
|
@ -32,21 +32,7 @@ class CloudKitArticlesZoneDelegate: CloudKitZoneDelegate {
|
|||||||
self.articlesZone = articlesZone
|
self.articlesZone = articlesZone
|
||||||
}
|
}
|
||||||
|
|
||||||
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey]) async throws {
|
func cloudKitDidModify(changed: [CKRecord], deleted: [CloudKitRecordKey], completion: @escaping (Result<Void, Error>) -> Void) {
|
||||||
|
|
||||||
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) {
|
|
||||||
|
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
do {
|
do {
|
||||||
|
@ -29,7 +29,7 @@ public enum CloudKitZoneError: LocalizedError {
|
|||||||
|
|
||||||
public protocol CloudKitZoneDelegate: AnyObject {
|
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)
|
public typealias CloudKitRecordKey = (recordType: CKRecord.RecordType, recordID: CKRecord.ID)
|
||||||
@ -1046,12 +1046,7 @@ public protocol CloudKitZone: AnyObject {
|
|||||||
switch result {
|
switch result {
|
||||||
|
|
||||||
case .success:
|
case .success:
|
||||||
do {
|
self.delegate?.cloudKitDidModify(changed: changedRecords, deleted: deletedRecordKeys, completion: completion)
|
||||||
try await self.delegate?.cloudKitDidModify(changed: changedRecords, deleted: deletedRecordKeys)
|
|
||||||
completion(.success(()))
|
|
||||||
} catch {
|
|
||||||
completion(.failure(error))
|
|
||||||
}
|
|
||||||
|
|
||||||
case .failure(let error):
|
case .failure(let error):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user