将核心数据应用到我的应用程序有多容易?

时间:2010-08-12 19:45:50

标签: iphone xcode sqlite core-data mkmapview

我是新手iphone开发者,刚刚完成了我的第一个iphone应用程序。 在配置我的iphone进行开发之后,我注意到应用程序使用了太多的内存,并且从应用程序访问应用程序中的sqlite数据库发出的几个内存泄漏导致应用程序经常崩溃。运行仪器后,我认为核心数据听起来更好:我当然还需要使用我拥有的sqlite数据库。

所以我的问题是:调整已有的应用程序以运行核心数据有多容易?我的应用程序基本上按县显示少量的17,000种不同的mapView注释,虽然我的数据库非常简单,基本上只有一个巨大的电子表格。

在App委托中,我的应用程序打开Sqlite数据库,将一些数据放入具有四个属性的位置对象中,然后创建这些对象的数组。 第一个视图控制器允许用户决定用户希望查看哪个县(十二个中的一个),然后最后一个视图控制器使用循环将所选位置添加到mapView。

我应该如何修改上一段中的应用,以便它使用CoreData?你能指出我可以用来实现这一目标的任何资源(最好不是开发中心的CoreData教程;过于混乱,比我现在需要的更复杂)?或者我是否必须在xcode中创建一个全新的项目并从头开始?

2 个答案:

答案 0 :(得分:1)

为间接的教诲道歉,但......

首先,我要说你的断言,“在运行乐器之后,我认为核心数据听起来更好的方式......”是有缺陷的。在您的应用中查找错误和性能问题不会自动意味着更好的方法 - 它可能只意味着您需要修复内存泄漏和/或根据您的分析显示的方法调整您的方法。

您说您仍然需要使用现有的SQLite数据库这一事实不会自动排除使用Core Data,但它确实会使您的最终解决方案显着更复杂。如果您可以完全使用 核心数据 SQLite,那么这将是您最好的选择。

此外,Core Data不是初学者(或者,我认为,甚至是中级)Cocoa技术。它需要重要的先决条件知识来做除了非常基本的东西以外的任何事情,而不会在不可避免的问题出现时失去绝望。如果您现在太忙于花时间阅读文档并研究该技术,那么您最好只是解决现有解决方案的问题。

...并且您最现有的解决方案(直接使用SQLite)没有任何问题。更好的问题是关于您当前方法遇到的具体问题。

也就是说,如果您想要使用现有的基于iOS的解决方案来使用Core Data,那么与使用Mac OS相比,您可能会更容易。创建一个基于Core-Data的基本iPhone应用程序项目并查看代码。构建核心数据堆栈的代码非常明显。唯一要记住的是添加一个xcdatamodel文件,就像在空项目中找到的那样。如果您已经足够与SQLite库进行交互,那么您应该有足够的经验来清楚地了解Core Data在标准iOS应用程序中的使用方式。

答案 1 :(得分:0)

转换为核心数据所需的步骤: - 开发数据模型(可能以图形方式在xcode中) - 采用您的代码来代替使用核心数据,即重写该模块 - 读取旧数据并将其放入核心数据

如果你已经运行了sqllite,我会坚持下去。如果它使用了太多的内存,那可能是你的错误,或者你加载到内存中的数据分区错误,你想要解决这个问题或者另一个问题 - 尽管Core Data使得它可能更容易获得没错。