- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我正在尝试实现 Clean Architecture由罗伯特·马丁描述。更具体地说,我正在使用 VIPER这是 Clean Architecture 的 iOS 版本。
我遇到的问题如下:
用户开始查看带有地点(图钉)的 map 。如果他点击一个按钮,一个图钉就会被放下,他会被带到另一个 View 来创建(或者编辑,如果它是点击一个现有的图钉)这个地方(或取消)。在另一个 View 中,用户可以编辑该地点的信息,然后单击“返回”或“完成”(或“编辑”)。如果他单击“完成”,PlaceDetailsViewController 会向 PlaceDetailsPresenter 发送一条消息,其中包含地点信息,PlaceDetailsPresenter 使用 CreatePlaceInteractor 来创建地点。此交互器返回用于标识地点的 GUID。
如果用户在创建地点之前单击返回,他将返回到 map ,并且放下的图钉会上升并消失(因为它没有 GUID,所以它是一个新地点并消失)。如果他在创建后单击返回,则图钉会保留在那里(因为它应该有一个 GUID)。
我应该如何连接所有这些以及位置信息(包括 GUID)应该存储在哪里?澄清一点:
现在这就是我所拥有的:
编辑:
基本上我认为问题是 VIPER 来自 Robert Martin 的 Clean Architecture,他来自 Web (Rails) 背景,所以他对 state 考虑不多(或者在他的演讲中没有具体说明)。
这主要是我的问题,状态应该存储在哪里,不同的模块应该如何通信,是通过线框,还是通过数据库,还是通过交互器,还是像这里这样通过Presenter相互通信https://github.com/objcio/issue-13-viper-swift .
最佳答案
我对 Viper 了解不多,所以我无法对此发表评论。然而,系统的总体状态应该保存在实体对象中并由交互者操纵。 GUI 的详细状态(选择矩形等)应该由 Controller 和呈现器之间的特殊连接来管理。
在您的情况下,有两个屏幕。 map 和地点编辑器。单击 map 会导致调用 placePinController。它收集点击的位置和任何其他上下文数据,构造一个 placePinRequest 数据结构并将其传递给 PlacePinInteractor,后者检查 pin 的位置,必要时对其进行验证,创建一个 Place 实体来记录 pin,构造一个 EditPlaceReponse对象并将其传递给 EditPlacePresenter,后者会显示地点编辑器屏幕。
如果在地点编辑器屏幕上单击“完成”按钮,它会调用 EditPlaceController,后者将已编辑的数据收集到 EditPlaceRequest 数据结构中,并将其传递给 EditPlaceInteractor。等..
您专门询问了 pin 的 GUID。这将由 Place 实体创建并传递回 editPlacePresenter PlacePinInteractor。
关于ios - 清洁架构 - Robert Martin - 如何连接用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28892833/
是否可以简化在裸机上运行的这条链: 具有随时间变化的副本数的 StatefulSet 服务 使用 proxy-next-upstream: "error http_502 timeout invali
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我需要为应用程序制定架构。它专为销售产品而设计。 系统每天将接受大约 30-40k 的新产品。它将导致在表 product 中创建新记录。 系统应保留价格历史记录。用户应该能够看到产品 A 的价格在去
我需要一些帮助来理解 PHP 的内部工作原理。 还记得,在过去,我们曾经写过 TSR(Terminate and stay resident)例程(pre-windows 时代)吗?一旦该程序被执行,
1.Nginx 基础架构 nginx 启动后以 daemon 形式在后台运行,后台进程包含一个 master 进程和多个 worker 进程。如下图所示: master与
本文深入探讨了Kubernetes(K8s)的关键方面,包括其架构、容器编排、网络与存储管理、安全与合规、高可用性、灾难恢复以及监控与日志系统。 关注【TechLeadCloud】,
我知道 CNN 的工作原理,包括每一层的用途(Dropout、Pooling 等)。但是,在为新数据集设计 CNN 时,我不知道要使用多少个 Conv-Relu-Pool 层,在最终获得输出之前我应该
在基于 REST 的架构中,资源和方法之间有什么区别。有吗? 最佳答案 资源是您的应用程序定义的东西;它们与物体非常相似。方法是 HTTP 动词之一,例如 GET、POST、PUT、DELETE。它们
我想用 oneOf仅在 xyType 的值上不同的模式属性(property)。我想要其中两个:一个是 xyType设置为 "1"第二个在哪里xyType是 任何其他值 .这可以使用 json 模式完
寻求 PHP 架构师的建议! 我对 PHP 不是很熟悉,但已经接管了一个用该语言编写的大型分析包的维护工作。该架构旨在将报告的数据读取到大型键/值数组中,这些数组通过各种解析模块传递,以提取每个模块已
这些存在吗? 多年来,我一直是大型强类型面向对象语言(Java 和 C#)的奴隶,并且是 Martin Fowler 及其同类的信徒。 Javascript,由于它的松散类型和函数性质,似乎不适合我习
我已经阅读了 Manning 的 Big Data Lambda Architecture ( http://www.manning.com/marz/BD_meap_ch01.pdf ),但仍然无法
在过去的几年里,我做了相当多的 iOS 开发,所以我非常熟悉 iOS 架构和应用程序设计(一切都是一个 ViewController,您可以将其推送、弹出或粘贴到选项卡栏中)。我最近开始探索正确的 M
我有以下应用程序,我在其中循环一些数据并显示它。 {{thing.title}} {{thing.description}}
昨天我和我的伙伴讨论了我正在开发的这个电子购物网站的架构。请注意,我为此使用 ASP.NET。他非常惊讶地发现我没有将添加到购物车的项目保留在 ArrayList 或其他通用列表中,而是使用 LINQ
我正在使用在 tridion 蓝图层次结构中处于较低位置的出版物。从蓝图中较高级别的出版物继承的一些内容和模式不适合我的出版物,并且永远不会被我的出版物使用。 我将跟进添加这些项目的内部团队,并尝试说
我目前已经在 Cassandra 中设计了一个架构,但我想知道是否有更好的方法来做事情。基本上,问题在于大多数(如果不是全部)读取都是动态的。我构建了一个分段系统作为应用程序服务,读取动态自定义查询(
我正在按照 documentation 中给出的 icingaweb UI v 2.0 布局执行在服务器上设置 icinga 的步骤。 。我成功进入设置页面,该页面要求您输入 token ,然后按照步
我必须保存来自不同社交媒体的用户的不同个人资料。例如用户可能有 1 个 Facebook 和 2 个 Twitter 个人资料。如果我保存每个配置文件它作为新文档插入不同的集合中,例如 faceboo
我的团队使用 Puppet 架构,该架构目前可在多个环境(流浪者、暂存、生产)中容纳单个应用程序。 我们现在想要扩展此设置的范围以支持其他应用程序。他们中的许多人将使用我们已经定义的现有模块的子集,而
我是一名优秀的程序员,十分优秀!