Swift-计算属性与数据库操作

问题描述

我对面向协议的编程非常陌生。我正在使用下载SDK开发ott产品。我的代码中有几件事。

  1. VODContent->代表视频的模型。
  2. OfflineMedia->协议。
  3. RLMOfflineMedia->一个领域数据库类 将VOD数据存储在SDK中。

我已确认协议VODContent的{​​{1}}和RLMOfflineMedia。这样我就可以在OfflineMediaOfflineMedia之间使用VODContent作为适配器。在SDK内,我为RLMOfflineMedia创建了一个extension来执行数据库操作。它具有如下相似的结构。

OfflineMedia

在SDK内,我可以使用'OfflineMedia.realmObject'或//RLMOfflineMedia+OfflineMedia.swift //which handles the DB operations related to RLMOfflineMedia extension OfflineMedia { var realmObject: RLMOfflineMedia { return //check for an existing entry in database using primary key or creates a new realm object and return it. } } 轻松快速地管理数据库操作。此时一切正常。但是后来我意识到,每当我使用self as? RLMOfflineMedia时,它将执行相对繁重的数据库操作。作为一名优秀的程序员,我应该避免这种情况。我需要知道什么是解决此问题的最佳方法。我本人有一些想法,但我不确定这些想法是否正确。在下面只提及它们。

注意:我假设数据库本身没有缓存机制,可以避免一次又一次地获取同一内容

截至目前,我保留了较不优化的旧实现。我正在等待答案,以便优化代码

**更新:-** 添加有关OfflineMediaVODContentOfflineMedia

的更多信息

此处RLMOfflineMedia表示来自服务器的对象,被解析为快速对象。 VODContent是用作将OfflineMedia连接到SDK的桥梁的协议。通过确认VODContentVODContent,我可以获取在SDK中保存/处理数据所需的任何属性。这意味着我没有将视频资产作为OfflineMedia对象传递,而是VODContent(我认为这称为依赖注入)。在这里,我使用OfflineMedia作为中介。 SDK OfflineContent内部表示一个OfflineMedia,我可以通过将VODContent的类确认为RLMOfflineMedia来将其保存到DB。我为OfflineMedia创建了几个扩展,以执行不同的操作(例如:数据库操作,下载视频资产等),只是大多数业务逻辑都写在OfflineMedia扩展内部。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)