在Clean Architecture中使用NSFetchedResultsController

时间:2017-07-27 22:21:01

标签: ios swift core-data clean-architecture viper-architecture

我没有太多运气就找到了答案。这个问题几乎是一样的,但答案不是很清楚(至少对我来说)!  Which it is the place for NSFetchedResultsController in VIPER architecture?

NSFetchedResultsController似乎是一个非常有用的iOS应用程序方法,但我见过的所有示例都非常重视ViewController层 - 至少VC成为委托。在Clean Architecture / Viper中,模型层与View层非常不连接,我无法弄清楚如何在这种架构中使用NSFRC。上述问题的答案意味着交互者应该是一个代表但是没有意义 - 然后管理对象将出现在交互者,而不是PONSO。也许我还不太了解它,但是(a)它是否在清洁建筑中占有一席之地; (b)如果确实如此,那么想要正确的Swift实现模式?

2 个答案:

答案 0 :(得分:1)

您可以将NSFetchedResultController视为控制器或适配器。

我不同意ad-johnson所说的NSFRC属于模型。

Clean Architecture中的依赖关系规则说,依赖关系必须指向内部。并不是说用例或适配器不应该知道模型层。

答案 1 :(得分:0)

也许NSFetchedResultsController在数据之间进行最紧密的耦合以查看iOS项目中的图层。为了解决这个问题,我以类似于@ ad-johnson解释的方式在NSFetchedResultsController周围使用了包装器。我还创建了一个Xcode模板,该模板可在项目中自动为我创建所需的协议。

我认为我已经成功地通过边界将NSFetchedResultsController与应用程序的另一层完全分开,而不会失去NSFetchedResultController例程的功能。这样我就可以轻松地测试,修改甚至替换所有层,因为层之间的松散耦合。

如果您想了解更多信息,here in GitHub是一个名为CarOwnership的项目,它描述了如何在干净的体系结构中使用NSFetchedResultsController。您也可以找到它here in my blog