【问题标题】:New to Core Data for iphoneiPhone 版 Core Data 的新手
【发布时间】:2010-12-12 00:07:15
【问题描述】:

我是 iphone 平台的新手,正在创建一个应用程序来检索 rss 提要并将其显示在 UITableView 中。我已经让这个工作完美(或者更确切地说,我想要的方式)。我在想的是我会将当前的提要项目存储在手机上,以便它在获得新提要时首先加载它存储的旧项目,然后解析新提要并添加新项目并刷新 TableView。我打算使用 Core Data 来存储旧的提要项目,因为这将是学习 Core Data 的好方法,并且是对 Core Data 的适当使用。但是,我很难学习如何使用 Core Data 并将其与表/数组连接。

我已经用谷歌搜索并查看了 stackoverflow 的教程,但还没有找到任何能以我真正理解的方式解释它的东西。将不胜感激将 Core Data 添加到现有应用程序所需的整体步骤的任何解释。完整的细节不是必需的(但也很有用)。我只是对 SQL 或以这种方式存储数据不是很有经验,并且无法理解 Core Data 的整个概念是如何工作的,以及它是如何连接到一切的。

此外,任何更好的方法来做我正在尝试完成的事情也将不胜感激。

【问题讨论】:

    标签: iphone cocoa-touch uitableview core-data


    【解决方案1】:

    在 Stack-Overflow 的其他帖子中有所提及,但我强烈推荐 Prag Prog 书“Core Data:Apple 用于在 Mac OS X 上持久化数据的 API”——大多数也与 iPhone Core Data 应用程序相关;也有一整章是关于创建 iPhone 应用程序的。

    http://pragprog.com/titles/mzcd/core-data

    【讨论】:

      【解决方案2】:

      另外,任何更好的方法来做我想要完成的事情也将不胜感激

      是的,听起来 Core Data 可能对您的应用程序来说太过分了。假设您的提要项目存储在一个集合对象中,您可以轻松使用 OSX 的built in serializaition。

      【讨论】:

        【解决方案3】:

        NSFetchedResultsController 仍然有点问题,需要脆弱的解决方法。在继续阅读书籍教程之前,我将从更简单的 iPhone 核心数据“位置”教程开始。

        【讨论】:

        • 你能说得更具体点吗?我记得有几个错误在 3.0 中有一些相当糟糕的后果,但我很确定 NSFetchedResultsController 在 3.1 中相当稳定和可用。是否还有我不知道的悬而未决的问题?
        • 移动行时,获取控制器引用其内部数组的中间索引。如果所述索引不再存在,则随后重新加载部分会导致立即崩溃。
        【解决方案4】:

        存在用于基于 Core Data 的应用程序的 Xcode 模板;这些是让 Core Data 起步的一个很好的开始。但是,听起来您想将 Core Data 集成到您现有的应用程序中,因此您需要...

        • 添加三个主要核心数据对象:托管对象上下文 (MOC)、托管对象模型 (MOM) 和持久存储协调器 (PSC)。这些需要在您希望 Core Data 可用的任何地方都可以访问,因此无论是在您的应用程序委托中,还是在您的表格视图的控制器或数据源中更合适。
        • 在 Xcode 中创建一个 MOM。这将是一个 .xcdatamodel 类型的文件,它是一个对象图,用于定义您在应用中需要的所有核心数据实体。
        • 使用 NSFetchedResultsController(由 Louis Gerbarg 建议)从 Core Data 中获取数据并将其显示到您的表格视图中。
        • 在您现有的 RSS 获取和解析例程中添加代码,以便在适当的时候将新的 Core Data 对象存储回存储中。

        一个好的开始方法是创建一个新的 Core Data 应用程序并尝试一下;您还可以查看 Apple 关于该主题的出色资源,例如 Core Data Programming Guide 和示例应用程序 Recipes 和 Locations。 (可能需要开发者注册。)

        最后要注意的是,在大多数情况下,您需要添加的许多 Core Data 代码可以直接从其中一个 Xcode 模板应用程序中提取并粘贴到您的程序中(对于您需要的三个核心数据对象的访问器)。不过请注意不要使用您不理解的代码。

        【讨论】:

          【解决方案5】:

          如果您使用 CoreData 来填充 UITableView,那么您真的想使用 NSFetchedResultsController,而不是尝试自己填充和同步数组。 NSFetchedResultsController 的文档包含几个 CoreData 教程的链接,包括填充表格视图的教程。

          【讨论】:

            猜你喜欢
            • 2010-12-07
            • 2011-01-10
            • 1970-01-01
            • 1970-01-01
            • 2011-08-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-29
            相关资源
            最近更新 更多