[英]How to store a Firebase ListenerRegistration object in UserDefaults?
我正在編寫一個用於從 UserDefaults 存儲、檢索和刪除快照偵聽器的包裝器。 但是,我遇到了一些問題。 我正在嘗試通過執行以下操作來存儲它:
ListenerRegistration
偵聽器編碼為Data
[String:Data]
) 屬性func storeListener(listener: ListenerRegistration, for objectId: String, atPath path: AppAPI.Path) {
let key = formatKeyForListener(objectId: objectId, path: path)
do {
let encodedListenerData = try NSKeyedArchiver.archivedData(withRootObject: listener, requiringSecureCoding: false)
activeListeners.updateValue(encodedListenerData, forKey: key)
UserDefaults.standard.set(activeListeners, forKey: Strings.listenersKey)
UserDefaults.standard.synchronize()
} catch {
print("Error encoding listener with key: \(key)\nError: \(error.localizedDescription).")
}
}
不幸的是,我看到以下錯誤: Error: The data couldn't be written because it isn't in the correct format...
Firestore 偵聽器不會在應用啟動之間持續存在。 當應用程序進程以任何方式被殺死時,所有的偵聽器都會消失,並且在應用程序再次啟動時不會回來。 如果您希望監聽器在下次啟動時返回,您將需要編寫代碼來再次建立這些監聽器,並決定如何處理它們生成的任何文檔。 如果這是您想要的,那么您應該集中精力找出如何在存儲系統中表示這些偵聽器(可能只是一個集合或文檔路徑就可以了),並在啟動時重新構建它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.