我在非关系数据库架构方面经验不足。我的用例如下。
我有一个约会和Customer Realm对象模型。
预约属性是
id
和relatedCustomer
(客户模型)。
客户属性为id
和name
我从服务器获取约会列表,它将在Realm表中添加relatedCustomer
作为约会对象的关系。
稍后,我从另一个API调用中获取客户列表,它将向Customer Realm表中添加更多客户。从服务器获取客户列表数据之后,在创建客户域对象之前,我清除所有以前保存的客户对象,以确保没有孤立客户对象(在服务器中删除但在我的域缓存中可用的客户)用户界面。此批量删除删除了我的相关客户的约会。
我该如何处理?
答案 0 :(得分:2)
不幸的是,这是一个在Realm中不直接的用例。
我建议(如果您还没有这样做),您可以在您的客户模型上id
(我将其称为Customer
)为该模型的primary key property。< / p>
一旦你这样做,这是一个可能的解决方案。
当您从服务器获取客户列表时,我假设您将获得一个JSON,XML,Swift词典或类似的数据结构,其中包含客户列表。从该客户列表中,创建一个Swift Set
id
个字符串,每个客户一个。
然后使用Realm
的{{1}} API获取您域中所有objects()
个对象的列表。然后,您可以使用Swift的Customer
方法将现有客户列表转换为map()
个Set
字符串。
现在你有两套,你可以使用id
上的subtracting()
方法获取你需要移除的所有Set
的列表({1}对于您的Realm中的客户,而不是您的服务器数据中的客户)。然后,您可以从领域中删除这些对象。
最后,您可以使用id
的{{1}}方法添加所有新客户,并更新现有用户。
您可能还想调查是否可以更改您的服务器API,以便为您提供相对于上次查询时提供的列表的删除用户列表。