我有一个新的 iPad 应用程序,它是数据驱动的(读取、删除、创建、更新),并且需要在安装了该应用程序的 iPad 设备上保持数据持久性。该应用程序大约有 10 个表;这 10 个表在某些方面是相关的(一对多;多对多;独立)。我是 iPad 数据驱动应用程序的新手。
我不知道我应该遵循 Core Data 方法还是 SQLite 方法。哪种方法更好且面向现实世界?请指教。非常感谢。
我有一个新的 iPad 应用程序,它是数据驱动的(读取、删除、创建、更新),并且需要在安装了该应用程序的 iPad 设备上保持数据持久性。该应用程序大约有 10 个表;这 10 个表在某些方面是相关的(一对多;多对多;独立)。我是 iPad 数据驱动应用程序的新手。
我不知道我应该遵循 Core Data 方法还是 SQLite 方法。哪种方法更好且面向现实世界?请指教。非常感谢。
我的建议是两者都尝试;勾勒出你的应用程序的两个简单版本,每个实现一个。当然,Core Data 在幕后使用 SQLite 作为存储,但远不止这些。在我看来,这是一个非常复杂,笨重的野兽,但它是关于建模和持久化具有属性的对象,当您删除关系中涉及的对象时,它可以帮助很多一致性,并且 NSFetchedResultsController 有助于填充以节省内存的方式使用 UITableView。使用 SQLite,它只是一个数据库,仅此而已;你必须做所有的工作,但是有很好的 Objective-C 前端,你完全可以控制而不是必须以 Core Data 非常奇怪的方式做所有事情。
我的书中有一小部分演示了一个微小的 Core Data 应用程序,即使它很小,你也可以看到我花了很多时间把头撞在 Core Data 特殊做事方式的墙上:
http://www.aeth.com/iOSBook/ch36.html#_core_data
上一节有几行展示了从带有漂亮 Objective-C 前端的 SQLite 数据库中获取数据是多么简单:
http://www.aeth.com/iOSBook/ch36.html#_sqlite
我建议您在投入使用之前阅读一本有关 Core Data 的书。有几个不错的。我并不是说它不好,但它根本不是初学者技术,你真的需要知道你在做什么。
在我看来,您在使用 Core Data 时走在了正确的轨道上,您需要问自己的是如何使用您的数据来对抗每种方法的好处。核心数据允许您使用像 NSDictionaries 这样的数据类型来更新和写入数据,这些数据类型不需要任何开箱即用的技术来处理和写入 SQLite 那样的数据。SQLite 确实可以工作并且可以按照您的意愿工作,但在我看来,使用第三方包装器只是实现已经原生的东西的又一步。