我应该在哪里将Core Location方法放在VIPER / MVP iOS项目中?

时间:2018-01-18 11:22:46

标签: ios swift core-location mvp viper

我搜索了很多,我知道视图控制器实际上是Viper或MVP架构中的“View”而Presenter包含逻辑...但是由于演示者应该易于测试,所以放置Core是否合适位置内容(如LocationManager和位置更新)到演示者?或者我应该放入视图控制器并通知演示者?

1 个答案:

答案 0 :(得分:3)

我通过创建一个LocationService对象来解决这个问题,该对象包装了所有的核心位置方法,并公开了它们的输出,可能会将位置更新的结果公开为流(如果你是使用Rx)或者回调。

我使用Dependency Injection(可能使用Swinject)将此注入MVP中的演示者层,或VIPER中的交互器层(因为位置信息可能会影响核心业务逻辑该应用程序)。为了测试应用,请创建一个'模拟'该服务的版本提供测试数据并将其注入测试中的演示者/交互者。