Iphone iOS核心数据:混淆核心数据和数据库

Iphone iOS核心数据:混淆核心数据和数据库,iphone,ios,database,core-data,Iphone,Ios,Database,Core Data,我对核心数据到底是什么感到困惑。或者我想我的问题是,在处理数据库时,您会使用核心数据吗?比如,如果我想从数据库中访问值,我会使用核心数据来访问这些值吗?我将如何处理这个问题 非常感谢您的帮助。是的,如果您想在设备上安装本地数据库,核心数据是合适的技术。这可能是有意义的,开始你的研究和 您也可以使用(核心数据在后端使用),但核心数据提供了一些实质性优势,是iOS的首选数据库接口。但是,如果您出于任何原因决定使用SQLite,我建议您考虑使用 但核心数据通常是一种可行的方法。它是在iOS应用程序中存

我对核心数据到底是什么感到困惑。或者我想我的问题是,在处理数据库时,您会使用核心数据吗?比如,如果我想从数据库中访问值,我会使用核心数据来访问这些值吗?我将如何处理这个问题


非常感谢您的帮助。

是的,如果您想在设备上安装本地数据库,核心数据是合适的技术。这可能是有意义的,开始你的研究和

您也可以使用(核心数据在后端使用),但核心数据提供了一些实质性优势,是iOS的首选数据库接口。但是,如果您出于任何原因决定使用SQLite,我建议您考虑使用


但核心数据通常是一种可行的方法。

它是在iOS应用程序中存储数据的一种方便的本地方法。尽管您可以使用各种sqlite工具查看它创建的文件,但不要将其视为sqlite。相反,可以将其视为一种工具,用于处理对应用程序非常重要的信息的对象图

我主要用了两种方法。首先,存储一组对应用程序很重要的静态数据,在一个例子中,这是室内地图应用程序的大量位置数据。作为一个巨大的航路点CSV文件被转换成核心数据。核心数据在这方面非常有用,因为它允许准备一个sqlite文件,该文件随包含所有信息的应用程序一起提供。来自web服务的更新将作为更多CSV(添加到核心数据以保持信息最新)到达。在运行时,位置信息对象(用户所在的航路点)通过谓词(即他们点击的点)检索,该对象通过其核心数据关系指示从该点可以到达的位置。核心数据提供了通过室内地图执行*路由所需的信息

第二,当您有一堆作为JSON到达的对象,并且希望以后能够存储和访问这些对象时,这非常好。假设你有一个典型的应用程序,其中有一个用户和一些关于该用户的信息,我们称之为东西。用户有很多东西。当您想了解某个用户时,您可以使用谓词(通常为“name”或类似谓词)检索核心数据记录,然后将存储的有关该用户的所有信息取回。同样,您可以利用关系来探索用户的连接,并使显示信息变得容易。也许用户有很多东西,然后你可以说“User.Things”,然后你会得到一组表示这些东西的NSManagedObject

你可以像使用数据库一样使用它。它的实用性在于,它很容易从iOS代码的任何地方访问,也很容易存储和检索信息。使用Faulting可以检索一个对象,并通过以下关系导航到通过关系连接的任何对象。因为您自己在数据模型编辑器中定义了属性和关系,所以可以轻松地为您需要存储的内容进行自定义。对我来说,它是iOS最常用和最有用的部分之一

当您希望自动显示核心数据中的信息时,可以使用NSFetchedResultsController启动提取,并通过委托方法响应对基础数据的更改。如果将UITableView设置为使用NSFetchedResultsController作为数据源,则可以在单元格中显示的对象发生更改时自动更新表。对于定期更新信息并希望显示内容保持最新的应用程序非常有用

当对象模型更改时,可以维护所有现有信息并将其迁移到新模型。核心数据在可能的情况下管理自动(轻量级迁移),或者如果您进行了更彻底的更改,则可以提供规则来处理迁移


核心数据的局限性在于它不适合存储二进制文件。如果您有需要存储的图像,那么存储到图像位置的路径比尝试存储实际数据要好得多。

核心数据是一个执行“对象持久性”工作的框架。换句话说,您可以使用代码将对象集合保存到磁盘,并在以后再次加载它们。它做了大量的工作,允许您存储大量数据,一次只加载所需的对象,并在内存紧张时卸载对象

核心数据可以使用数据库来实现这一点,但这是它的业务,而不是您的业务。当你使用核心数据时,它是一个黑匣子。你告诉它保存数据,然后走开


如果您想与现有数据库(例如web服务器上的MySQL数据库)进行交互,那就完全不同了。您可以使用核心数据在设备上存储对象的本地副本,但在这种情况下,核心数据不会关心对象是否是来自其他数据库的副本。不要紧。

+1在核心数据编程指南上。我想说,如果你打算对核心数据做任何严肃的事情,阅读是必须的。但是如果你需要利用远程数据库,你会怎么做呢?苹果在解释核心数据是如何融入的方面做得很差,或者在这种情况下没有。提前谢谢。@AlexZavatone他们没有真正讨论,因为iOS应用程序和服务器数据库之间没有集成。您的web服务器上通常运行一个web服务,该服务与服务器上的数据库通信。iOS应用程序与服务器的集成仅限于请求web服务,并且完全与服务器的数据库隔离。是的,这方面的先进技术似乎是一个相当开放的领域。我很惊讶这方面的技术没有得到更清楚的解释。我已经在这样做了,但是应该有一个覆盖的“核心数据”,它还包括对外部数据库的访问