开始使用核心数据
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 来帮助您入门。
【讨论】:
以上是关于开始使用核心数据的主要内容,如果未能解决你的问题,请参考以下文章