我的问题如下: 用户开始查看地图上的地点(标记)。 如果他点击按钮,则会放置一个标记,并且他将被带到另一个视图以创建(或编辑,如果它是对现有标记的单击)该地点(或取消)。 在这个其他视图中,用户可以编辑地点的信息,然后单击“返回”或“完成”(或“编辑”)。 如果他点击“完成”,PlaceDetailsViewController向PlaceDetailsPresenter发送包含地点信息的消息,并且PlaceDetailsPresenter使用CreatePlaceInteractor创建地点。该互动器返回用于标识地点的GUID。
如果用户在创建地点之前单击返回,则回到地图并将删除已放置的标记(因为它没有GUID,所以是新地点并消失)。 如果他在创建后单击返回,则标记仍然存在(因为它应该有GUID)。
我该如何连接它们,并将信息(包括GUID)存储在哪里? 更明确一点: 1.谁应该通知MapPresenter针保留在那里还是离开了? 是PlaceDetailsPresenter还是应该将此信息传递给PlaceDetailsWireframe->MapWireframe->MapPresenter->MapView? 2.在返回之前,这个GUID应该存储在PlaceDetailsPresenter还是PlaceDetailsViewController中?
目前我的情况是: 编辑: 基本上,我认为问题在于VIPER来自Robert Martin的Clean Architecture,他来自Web(Rails)背景,因此他不太关注状态(或在演讲中不指定)。
我的问题主要是,状态应该存储在哪里?不同的模块应该如何通信?应该通过线框图、数据库、交互器还是通过 Presenter 之间的通信,就像这里 https://github.com/objcio/issue-13-viper-swift 中的通信一样。请注意,保留 HTML 标记。