日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios realm 文件_关于ios:具有后台进程的Realm实例会丢失数据

發(fā)布時間:2023/12/2 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios realm 文件_关于ios:具有后台进程的Realm实例会丢失数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我將Realm for Swift與僅內(nèi)存配置一起使用。 由于在后臺線程中更新數(shù)據(jù)庫,因此每次使用時都會創(chuàng)建一個Realm實例。 在Realm文檔中提到了此問題,這里還有另一個問題https://stackoverflow.com/a/45375608/613121。

但是通過測試數(shù)據(jù)庫,我注意到了不可預(yù)測的行為。 有時數(shù)據(jù)庫是空的,更新會重新填充數(shù)據(jù)庫而不是更新。 原因可能是該領(lǐng)域在撰寫之后被釋放了。

解決方案可能是在主線程中保留強引用。 我將Realm配置保存為單例。 單例返回具有相同配置的新Realm進行更新,并強烈引用另一個Realm以防止丟失,這是否安全?

在stackoverflow.com/questions/41002022/中,在主線程上出現(xiàn)單例提示的情況下討論了此問題。我的解決方法是在某個線程的配置單例中保留強大的參考。所有工作都是通過新的領(lǐng)域完成的。所以我完全不混淆線程-我希望。也許我應(yīng)該在主線程上創(chuàng)建帶有調(diào)度的單例。并且僅當調(diào)用者來自另一個線程時才創(chuàng)建新的Realm!

雖然我理解這個問題,但用例尚不清楚。在某些情況下,單例模式可能是一個解決方案,但正如David在該回答中所提到的那樣,以線程安全的方式使用Realm的最佳方法是使用let realm = try為您的Realm創(chuàng)建新的引用!每次在線程之間移動時,都會使用Realm()。如果遇到意外結(jié)果,則問題可能出在其他地方。添加一些說明問題的代碼可能會有所幫助。請花點時間回顧一下如何創(chuàng)建最小,完整和可驗證的示例

謝謝杰伊。我每次使用新的Realm實例時都遇到了問題。這似乎工作正常。但是在測試數(shù)據(jù)庫時,它是從后臺線程寫入數(shù)據(jù)庫并逐步通過調(diào)試器后為空的。因此,可能必須強烈參考具有相同配置的領(lǐng)域。現(xiàn)在看來可行。

聽起來應(yīng)該不錯。 您必須嘗試一下,這可能比在這里等待明確的答案要快。

我將編寫一個singleton類,作為構(gòu)造函數(shù)的一部分,它定義Realm配置并將其存儲,還打開并存儲該領(lǐng)域的實例。 然后,我向該類添加一個訪問器,以供您的線程使用; 它將使用相同的配置返回領(lǐng)域的新實例。 當那些超出范圍(并且您應(yīng)該允許它們超出范圍)時,由于單例實例保持其引用,您的領(lǐng)域?qū)⒈3植蛔儭?/p>

我可能錯誤地讀了您的第一個參考問題,但這與內(nèi)存領(lǐng)域無關(guān),因此不要求您在某處保留參考。

是的,我嘗試過,它似乎可以工作。 希望在隨后被銷毀的后臺線程中寫入新的Realm不會造成任何問題。

總結(jié)

以上是生活随笔為你收集整理的ios realm 文件_关于ios:具有后台进程的Realm实例会丢失数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。