【问题标题】:Realm multiple database problems解决多个数据库问题
【发布时间】:2021-03-08 07:46:14
【问题描述】:

本地有两个数据库,“user.realm”和“person.realm”。 'User' 模型需要保存在 'user.realm' 中。 'Person' 模型需要保存在 'person.realm' 中,当使用以下代码时,'User' 和 'Person' 表会在 'user.realm' 中创建。我只需要将“用户”模型保存到“user.realm”。

class User:Object { 
    @objc dynamic var id:Int = 0 
    @objc dynamic var name:String = "" 
} 

class Person:Object { 
   @objc dynamic var id:Int = 0 
   objc dynamic var name:String = "" 
} 

//create "user.realm"
var config = Realm.Configuration() 
config.fileURL = dataPath.appendingPathComponent("user.realm")     
Realm.Configuration.defaultConfiguration = config
var realm = try! Realm() 

//create  "person.realm"
var config = Realm.Configuration() 
config.fileURL = dataPath.appendingPathComponent("person.realm")     
Realm.Configuration.defaultConfiguration = config
var realm = try! Realm() 

当我执行一个用户数据库时,我只需要在user.realm中创建“User”表,而不是“User”和“Person”两个表在“user.realm”中一起创建,我不能删除 Person 模型,因为这样您就无法在“Person.realm”中创建“Person”表。个人觉得Realm实现起来比较麻烦。

【问题讨论】:

    标签: swift database realm


    【解决方案1】:

    了解 Realm 的关键点之一是它不是关系数据库。虽然它有一种有意的“感觉”,但没有这样的表格,而且领域结构通常在不同领域中分割。查看Realm vs Other Databases.

    在某些情况下,将类似的数据存储在同一个 Realm 中会更有效 - User 和 Person 看起来非常相似,因此将它们存储在同一个 Realm 中可能会更好 - 我只是不知道这里的用例。

    不过,要回答这个问题,您可以明确告诉 Realm 哪些对象或哪些对象要存储在一个领域中。它是通过这样的配置完成的

    let config = Realm.Configuration(objectTypes: [MyClass.self, MyOtherClass.self])
    let realm = try! Realm(configuration: config)
    

    该领域将只有 MyClass 和 MyOtherClass。将其应用于您的问题

    let config = Realm.Configuration(objectTypes: [UserClass.self])
    let myUserRealm = try! Realm(configuration: config)
    

    其中只有一种对象类型,即 UserClass。

    Realm 文档 Provide a subset of classes to a Realm 的“类子集”部分对此进行了介绍

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-18
      • 2010-12-16
      • 2019-07-03
      • 2017-07-02
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多