From fe9a371534663feab8385f359414202008c1d0b3 Mon Sep 17 00:00:00 2001 From: hank121314 Date: Fri, 29 Dec 2023 20:25:13 +0800 Subject: [PATCH] ensure that the key is synchronized after being added --- Sources/Defaults/Defaults+iCloud.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Sources/Defaults/Defaults+iCloud.swift b/Sources/Defaults/Defaults+iCloud.swift index 6d672db..2eb66ff 100644 --- a/Sources/Defaults/Defaults+iCloud.swift +++ b/Sources/Defaults/Defaults+iCloud.swift @@ -95,6 +95,7 @@ extension Defaults { for key in keys { localKeysMonitor.addObserver(key) } + self.syncWithoutWaiting(keys) } /** @@ -131,10 +132,13 @@ extension Defaults { */ func syncWithoutWaiting(_ keys: [Defaults.Keys] = [], _ source: DataSource? = nil) { let keys = keys.isEmpty ? Array(self.keys) : keys - let latest = source ?? latestDataSource() for key in keys { - backgroundQueue.async { + backgroundQueue.async { [weak self] in + guard let self else { + return + } + let latest = source ?? latestDataSource() await self.syncKey(key, latest) } }