簡體   English   中英

如何在 iOS 中重命名 realm object

[英]How to rename realm object in iOS

我在我們的 iOS 和 Android 應用程序中使用 realm。 出於某種原因,我想重命名我的 realm object 之一。

最初我們將其命名為 object Demo ,現在我想將其更改為RealmDemo

在 android 中,我們使用@RealmClass 注解實現了它

@RealmClass(name = "Demo")
open class RealmDemo : RealmObject() {
}

在 iOS 方面,我不確定我如何能像在 android 中那樣做類似的事情。

class RealmDemo: Object {
    override static func className() -> String {
        "Demo"
    }
}

我在上面嘗試過^,但出現以下錯誤“由於未捕獲的異常'RLMException'而終止應用程序,原因:'對象類型'Demo'不由領域管理'”

兩件事情。

首先,您可以隨意命名 object 並隨時更改其名稱。

然而,這是一個破壞性的變化,Realm 沒有任何辦法知道新命名的 object 與之前的 object“是同一個對象”。

如何處理取決於用例是什么:

  1. 如果這是開發情況,請刪除您本地的 Realm 文件並運行該應用程序,將自動創建具有新名稱的 object。
  2. 如果這是生產,則需要一個遷移塊(如在任何平台上)將數據從舊的 object 遷移到新的。

其次,另一個重要的是 object 現在的名稱是RealmDemo ,而之前的 object 是Demo

class RealmDemo: Object {

所以從技術上講,它們是兩個獨立的對象。 對於 Realm,您完全放棄了 Demo object,這是一個破壞性的變化。 Demo 仍然存在,但未在您的代碼中引用,因此會引發錯誤

在一個可能不相關的注釋上,className function 引用了 Demo

override static func className() -> String {
   "Demo"
}

但是 object 名稱是 RealmDemo。

目前尚不清楚為什么className function 存在,但它不是必需的或真正需要的。 請參閱對象的文檔以了解它們的結構 - 它們可能需要主鍵

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM