首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS:数据处理

iOS:数据处理
EN

Stack Overflow用户
提问于 2012-09-07 20:54:29
回答 1查看 71关注 0票数 0

解释

我的应用程序基本上使用了一个地图视图,其中覆盖了代表建筑物的多边形,并加上了注释。为此,它导入一个名为“注释”的自定义类,该类在点击注释时处理弹出细节,这意味着它存储建筑物的名称和地址。此时,标注(蓝色泄露按钮)加载一个空的DetailViewController对象(因为实际上没有任何数据可传递)。

我很快添加了一个新特性,它的形式是一个可搜索的表,它加载了Building类的自定义对象(具有类似于注释的属性,加上图像和更多细节),然后在前面提到的DetailViewController类中加载该建筑物的详细信息。

总之,MapVC包含多个注释,当点击相关的公开按钮时,就打开DetailVC。SearchVC是通过MapVC上的一个按钮访问的,它有一个Building表,它用相关的数据加载DetailVC,如下所示:

下一步

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

问题

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-07 21:02:21

你说的是MVC,模型视图控制器。这是一种非常聪明的处理事情的方法,也是一个很好的练习。模型存储数据,在本例中,存储建筑物名称等。视图显示数据。控制器将视图连接到模型,更新视图,从用户获得通知,然后更新模型。

对于模型数据,我使用单例模式。应用程序中只有一个单例实例。这样,数据就不会绑定到任何一个特定的视图控制器。数据只更新一次,即模型。对于应用程序数据对象来说,用单一的收敛点来解决问题要容易得多。

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

代码语言:javascript
复制
#import "DataController.h"

#define DATA() [DataController sharedInstance]

在我的代码中,我可以通过调用

代码语言:javascript
复制
DataController *data = DATA();

我所有的视图和视图控制器都访问存储在DataController中的对象,因此从来没有两个视图控制器独立地处理单独的信息。所有的参考资料都指向同一个地方。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12325253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档