我应该将 Core Location 方法放在 VIPER/MVP iOS 项目中的什么位置?

Ric*_*zio 4 mvp viper core-location ios swift

我搜索了很多,我知道视图控制器实际上是 Viper 或 MVP 架构中的“视图”,Presenter 包含逻辑......但是既然 Presenter 应该易于测试,那么放置 Core Location 的东西(像 LocationManager 和位置更新)到演示者?或者我应该放入视图控制器并通知演示者?

Ric*_*ley 5

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

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