gpt4 book ai didi

iOS:数据处理

转载 作者:行者123 更新时间:2023-11-29 04:26:08 28 4
gpt4 key购买 nike

解释

我的应用程序基本上使用带有代表建筑物的多边形叠加层的 map View ,以及注释。为此,它导入了一个名为 Annotation 的自定义类,该类在点击注释时处理弹出详细信息,这意味着它存储建筑物的名称和地址。此时,标注(蓝色公开按钮)加载一个空的 DetailViewController 对象(因为实际上没有任何数据要传递)。

我很快添加了一个可搜索表形式的新功能,该功能加载 Building 类的自定义对象(具有与 Annotation 类似的属性,以及图像和更多详细信息),然后在上述 DetailViewController 类中加载建筑物的详细信息。

总而言之,MapVC 包含多个注释,当点击相关的公开按钮时,这些注释将打开 DetailVC。 SearchVC 可通过 MapVC 上的按钮访问,并具有一个 Building 对象表,该表加载具有相关数据的 DetailVC,如下所示:

Basic diagram of the app's functionality

下一步

所以现在我想在标注上的蓝色公开按钮中实现功能,这样当用户点击它时,它就会加载建筑详细信息。目前它所拥有的只是注释的详细信息。我可以向注释添加额外的属性以使其完整,但我认为最好只使用一个名为 Building 的自定义类,该类具有 MKAnnotation 性质。然后这个 Building 类被加载用于注释和 searchVC 的表。

问题

最后,解决这个问题的最佳方法是什么?我希望所有数据都独立于图中的任何 VC 进行存储。我遵循了 Apple 的教程(BirdSighting 教程),该教程使用单独的 Datacontroller 类,然后将其加载到其他类中。这是最好的方法吗?

最佳答案

您谈论的是 MVC,即模型- View - Controller 。这是一种非常聪明的处理事情的方式,也是一个很好的实践。模型存储数据,在本例中为建筑物名称等。 View 显示数据。 Controller 将 View 连接到模型,更新 View ,从用户获取通知,然后更新模型。

我对模型数据使用单例模式。应用程序中只存在一个单例实例。这样,数据就不会绑定(bind)到任何一个特定的 View Controller 。数据仅在模型中更新一次。通过应用程序数据对象的单一汇聚点来解决问题要容易得多。

我在 PCH 文件中定义了一个宏。

#import "DataController.h"

#define DATA() [DataController sharedInstance]

在我的代码中,我可以通过调用轻松访问我的模型类

DataController *data = DATA();

我的所有 View 和 View Controller 都访问存储在 DataController 中的对象,因此永远不会有两个 View Controller 独立处理单独的信息。所有引用都指向同一个地方。

有些人使用AppDelegate对象来存储数据,但它很快就会变成1000行的野兽。我更喜欢保持 AppDelegate 干净:-)

关于iOS:数据处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12325253/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com