我在非关系数据库架构方面经验不足 . 我的用例如下 .
我有一个约会和Customer Realm对象模型 .
预约属性为 id
和 relatedCustomer
(客户模型) . 客户属性为 id
和 name
我从服务器获取约会列表,它将在Realm表中添加 relatedCustomer
作为约会对象的关系 .
稍后,我从另一个API调用中获取客户列表,它将向Customer Realm表中添加更多客户 . 从服务器获取客户列表数据之后,在创建客户域对象之前,我清除所有以前保存的客户对象,以确保没有孤立客户对象(在服务器中删除但在我的域缓存中可用的客户)用户界面 . 此批量删除删除了我的相关客户的约会 .
我怎么处理这个?
1 回答
不幸的是,这是一个在Realm中并不简单的用例 .
我建议(如果你还没有这样做)你在你的客户模型上做
id
(我称之为Customer
)为该模型primary key property .一旦你这样做,这是一个可能的解决方案 .
当您从服务器获取客户列表时,我认为您将包含客户列表'll get a JSON, XML, Swift dictionary, or similar data structure that'll . 从该客户列表中,创建一个Swift
Set
的id
字符串,每个客户一个 .然后使用
Realm
的objects()
API获取领域中所有Customer
对象的列表 . 然后,您可以使用Swift的map()
方法将现有客户列表转换为id
id
字符串 .现在您有两个集合,您可以使用
Set
上的subtracting()
方法获取需要删除的所有id
的列表(您的Realm中的客户为id
,但服务器数据中没有) . 然后,您可以从Realm中删除这些对象 .最后,您可以使用
Realm
的add(_:update:)
方法添加所有新客户,并更新现有用户 .您可能还需要调查是否可以更改服务器API,以便为您提供相对于上次查询时提供的列表的用户列表 .