使用 Core Data 进行存储 - 在基于导航和基于窗口的应用程序中 - iPhone

Posted

技术标签:

【中文标题】使用 Core Data 进行存储 - 在基于导航和基于窗口的应用程序中 - iPhone【英文标题】:Use Core Data for Storage - in navigation based & window based application - iPhone 【发布时间】:2009-08-27 21:44:36 【问题描述】:

在 XCode 中创建项目的选项太多了,

但是当我们选择基于导航的应用程序/基于窗口的应用程序时

我们可以看到额外的选项 - Use Core Data For Storage。

我需要简要说明一下。

其中有什么新东西?

【问题讨论】:

【参考方案1】:

详细说明 Jergason 所写的内容。 Core Data 是一种对象关系映射 (ORM),类似于 Java 世界中的 Hibernate。它从代码中抽象出存储数据(例如 SQL 或 .plist 文件)的实际机制。您的代码只需要处理一致的面向对象框架来获取对象、更新它们并持久化它们。 Core Data 支持某种程度的 ACID 事务,但不支持两阶段提交。在 iPhone 上,Core Data 的默认设置使用 ORM 层包装 sqlite 数据库。

使用 Core Data 的一个有趣的附带好处是可视化设计数据模型和生成模型类的工具。如果您有一个大型模型,这可以节省大量手动编码模型类的时间。

Core Data 的另一个有趣的好处是它能够将您的数据库从一个模型版本迁移到另一个模型版本。这在 iPhone 世界中非常重要,因为您可能希望将数据模型从应用程序的一个版本修改为下一个版本。 Core Data 提供了一种非常简单的方法来将持久化数据从旧模型迁移到新模型,而无需编写大量迁移代码。您只需定义一个迁移映射并向您的应用程序委托添加“几行”代码,然后事情就会为您转换。

iPhone 上的 Core Data 专为移动环境而设计。如果您将表中的所有行提取到一个数组中,它实际上并没有将所有内容都拉入内存。它创建了苹果所谓的错误数组,它只是一个看起来像 NSArray 的对象。当您访问数组的各种元素时,Core Data 会在使用时获取这些实体(行),而不是在查询时。它可以节省内存并帮助您的应用运行得更快。

总而言之,它是一个功能相当齐全的 ORM 层,虽然没有 Hibernate 丰富,但对于这个环境来说已经足够了。

【讨论】:

【参考方案2】:

Core Data 本质上是一种可视化构建模型的方法,是模型的一种界面构建器。您创建表示模型类的实体,并定义它们之间的关系。不必编写具有地址类实例的 Person 类,您可以通过拖放直观地创建它们。它还有很多其他功能,但这是我认为很酷的一个主要功能。

另见 thisApple 文档。

【讨论】:

以上是关于使用 Core Data 进行存储 - 在基于导航和基于窗口的应用程序中 - iPhone的主要内容,如果未能解决你的问题,请参考以下文章

在同一个数据库上同时使用 core-data 和基于 sqlite c 的 api

当并非所有对象都将被存储时,使用 Core Data 作为模型

SwiftUI 和 Core Data:基于用户输入获取

在 Swift Core Data 中对存储的数据模型提取进行排序

RESTkit,Core Data:在将对象传输到 Core Data 之前对其进行处理

.net core 基于Dapper 的分库分表开源框架(core-data)