首页 文章

如何在RealmSwift中创建关系?

提问于
浏览
2

我在非关系数据库架构方面经验不足 . 我的用例如下 .

我有一个约会和Customer Realm对象模型 .

预约属性为 idrelatedCustomer (客户模型) . 客户属性为 idname

我从服务器获取约会列表,它将在Realm表中添加 relatedCustomer 作为约会对象的关系 .

稍后,我从另一个API调用中获取客户列表,它将向Customer Realm表中添加更多客户 . 从服务器获取客户列表数据之后,在创建客户域对象之前,我清除所有以前保存的客户对象,以确保没有孤立客户对象(在服务器中删除但在我的域缓存中可用的客户)用户界面 . 此批量删除删除了我的相关客户的约会 .

我怎么处理这个?

1 回答

  • 2

    不幸的是,这是一个在Realm中并不简单的用例 .

    我建议(如果你还没有这样做)你在你的客户模型上做 id (我称之为 Customer )为该模型primary key property .

    一旦你这样做,这是一个可能的解决方案 .

    当您从服务器获取客户列表时,我认为您将包含客户列表'll get a JSON, XML, Swift dictionary, or similar data structure that'll . 从该客户列表中,创建一个Swift Setid 字符串,每个客户一个 .

    然后使用 Realmobjects() API获取领域中所有 Customer 对象的列表 . 然后,您可以使用Swift的 map() 方法将现有客户列表转换为 id id 字符串 .

    现在您有两个集合,您可以使用 Set 上的 subtracting() 方法获取需要删除的所有 id 的列表(您的Realm中的客户为 id ,但服务器数据中没有) . 然后,您可以从Realm中删除这些对象 .

    最后,您可以使用 Realmadd(_:update:) 方法添加所有新客户,并更新现有用户 .

    您可能还需要调查是否可以更改服务器API,以便为您提供相对于上次查询时提供的列表的用户列表 .

相关问题