领域多数据库问题

Realm multiple database problems

本地有两个数据库,'user.realm'和'person.realm'。 'User' 模型需要保存在 'user.realm' 中。 'Person'模型需要保存在'person.realm'中,当使用下面的代码时,'User'和'Person'tables是在'user.realm'中创建的。我需要 'User' 模型只保存到 '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”table,而不是“User”和“Person”两个table在“user.realm”中一起创建,我无法删除 Person 模型,因为这样你就无法在“Person.realm”中创建“Person”table。个人觉得Realm实现起来比较麻烦

了解 Realm 的关键点之一是它不是关系数据库。虽然它有 'feel' 这是有意的,但没有这样的表,而且领域结构通常在不同的领域之间分裂。查看 Realm vs Other Databases.

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

不过,要回答这个问题,您可以明确告诉 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)

其中只有一种对象类型,用户Class。

领域文档的 Class 子集部分对此进行了介绍 Provide a subset of classes to a Realm