【问题标题】:exclude a Realm model class排除领域模型类
【发布时间】:2017-04-25 07:49:53
【问题描述】:

我的应用中配置了两个 Realm 文件。我想将我的 Log 模型存储到与我的其余模型不同的文件中。我的问题是我在默认的 Realm 文件中也看到了我的 Log 模型类,这是我不想要的。如何从给定的 Realm 文件中排除特定的模型类?

我对我的主 Realm 文件使用默认配置,我只想将 Log 模型存储在另一个数据库文件中,但是当我在 Realm 浏览器中 default.realm 时,它也会显示 Log 模型。

【问题讨论】:

    标签: ios swift realm


    【解决方案1】:

    您可以通过objectTypes property on Realm.Configuration 明确列出给定领域可以存储的类:

    let configA = Realm.Configuration(fileURL: realmFileURL,
                                      objectTypes: [Dog.self, Owner.self])
    let realmA = Realm(configuration: configA)
    
    
    let configB = Realm.Configuration(fileURL: otherRealmFileURL,
                                      objectTypes: [Log.self])
    let realmB = Realm(configuration: configB)
    

    realmA只能存储DogOwner的实例,而realmB只能存储Log的实例。

    【讨论】:

      【解决方案2】:

      你可以在unmanaged classes中重写这个方法

      public class Log: Real.Object .... {
          ...
          ...
          public  override static func shouldIncludeInDefaultSchema() -> Bool {
              return false
          }
      }
      

      您现在可以使用默认设置创建您的领域

         let realm = Realm()
      

      【讨论】:

        猜你喜欢
        • 2010-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-05
        • 1970-01-01
        • 2012-09-04
        相关资源
        最近更新 更多