开始使用核心数据

Posted

技术标签:

【中文标题】开始使用核心数据【英文标题】:Getting started with Core Data 【发布时间】:2011-03-22 08:07:58 【问题描述】:

我无法理解 Core Data 在概念上和代码方面的工作原理。

我知道有一个协调器和一个上下文。我也知道有状态管理。它们如何协同工作?

我不明白如何将图像和一些字符串存储为对象。

假设我想稍后检索图像和字符串。我该怎么办?

我在哪里保存我的状态?怎么样?

我的代码是什么样的?我真的很感激这里有一个简单的代码示例,因为我真的很困惑。

【问题讨论】:

【参考方案1】:

这些是我发现的一些最好的教程:

Best tutorial I've found Another good, multipage tutorial Very good explaination of concepts Apple Doc, might help with the concepts Little Cheatsheet

至于你的问题:

我知道有一个协调员和 一个上下文。我也知道有 状态管理。它们是如何工作的 在一起吗?

持久存储协调器负责管理您的数据实际存储的位置,无论是 SQLlite DB 还是 XML 文件等等。协调器是抽象的,因此您不必担心后端的存储类型。

托管对象上下文是您与持久存储协调器交互的方式。把它想象成你的便签本。您可以从托管对象上下文创建和修改托管对象。

我不明白如何将图像和一些字符串存储为对象。 假设我想稍后检索图像和字符串。我该怎么办?

如果您浏览了上面的一些教程,您将了解如何将对象从托管对象上下文中拉出。 NSString 将简单地存储为托管对象上的字符串属性,如下所示:

[managedObject setValue:@"TestString" forKey:@"SomeStringProperty"];

我不太确定图像,因为我以前从未在 Core Data 中存储过图像。我知道任何可以序列化的东西都可以存储为可转换的属性。 Here's a post about storing UIImages in Core Data

我在哪里保存我的状态?怎么样?

您只需在托管对象上下文中调用“保存”方法。像这样:

[context save:&error]

【讨论】:

您可以将 NSData 对象存储在 Core Data 中,因此要保存图像,获取它的数据(可能使用 UIImagePNGRepresentation())并存储它。要检索图像,请从 Core Data 中获取 NSData 对象,然后使用 UIImage 的 +imageWithData 方法获取 UIImage。 在撰写此评论时,您链接的第二个教程返回错误 400 错误请求。 Ray Wanderlich 的教程非常糟糕。它在第二部分跳入了一些毫无意义的 Python 脚本。 :-|【参考方案2】:

通过 Apple 的Core Data tutorial。

【讨论】:

【参考方案3】:

Apple 提供了 tons 中的 documentation 和 source code 来帮助您入门。

【讨论】:

以上是关于开始使用核心数据的主要内容,如果未能解决你的问题,请参考以下文章

开始使用核心数据

将核心数据迁移到一个干净的开始

如何从 Swift 中每个 UI 测试断言的空核心数据开始?

更新核心数据的特定属性

核心数据道模式

从核心数据和关系开始