核心数据中的 NSFetchRequest

Posted

技术标签:

【中文标题】核心数据中的 NSFetchRequest【英文标题】:NSFetchRequest in Core Data 【发布时间】:2012-05-16 20:41:09 【问题描述】:

在使用 Core Data 时,我很难理解子视图中需要包含哪些内容才能执行获取请求并在表格视图中显示结果。我发现的所有示例要么只有一层深(随机日期),要么使用始终有效的根视图控制器,要么使用具有图片和其他属性(食谱)的多个视图控制器,这让我难以理解。

我正在寻找的一个示例是具有三个属性的实体。实体为album,三个属性为albumTitle、albumArtist、yearRecorded。

现在在我的导航应用程序中,我的根视图控制器有三行可供选择,根本不使用实体或核心数据。三个选项是“标题”、“艺术家”和“年份”。当您单击三行之一时,它将推送一个新的视图控制器并在新的表格视图中列出所有适当的属性。

我相信它应该非常简单,不需要太多代码,但我无法掌握它。非常感谢任何解释或示例代码。

【问题讨论】:

【参考方案1】:

您可以只发出一个不带谓词的 fetch 请求来从您的 Core Data 存储中获取所有对象,因此,您将拥有一组歌曲。

例如,您只需调用[fetchedSongs valueForKeyPath:@"artist"]; 来获取一组艺术家并将其作为源添加到您的表格视图中。

【讨论】:

那么你是说我将获取请求留在我的根视图控制器中,即使我没有在那里使用它来获取所有内容,然后查询每个属性并将其发送到下一个视图控制器?跨度> 我仍然没有得到实现它的语法或布局。我正在从我的 RootViewController 和我的 FolderListViewController 添加我的代码。我之前使用了专辑参考,因为我认为它会更容易解释。以下是我当前的代码。非常感谢您的帮助。 我是把你上面写的fetchedSongs添加到我的RootViewController还是SubViewController?该行是否会自动创建一个名为 fetchedSongs 的数组供我在子视图的 cellForRowAtIndexPath 中使用?如果我一旦知道我就能看到这项工作,我就会理解它。再次感谢。 不,fetchedSongs 是您从获取请求中获得的歌曲。然后用上面的方法得到专辑和atrists 您知道为什么在大多数 Apple 示例中他们只是像 book.title 一样执行 entity.attribute,但是当我尝试类似的代码时它却无法正常工作?文件夹 *folder = [__fetchedResultsController objectAtIndexPath:indexPath]; cell.textLabel.text = 文件夹.文件夹名称;

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

在核心数据中删除数据库中的对象的策略。 [RestKit/核心数据]

见Device中的核心数据表

核心数据中的触发器

如何使用tableview删除核心数据中的数据

如何显示已经保存在核心数据中的数据?

iOS 中的核心数据故障