Core Data

✍ dations ◷ 2025-09-13 18:41:08 #Core Data

Core Data是苹果公司所开发的macOS操作系统(旧称:Mac OS X及OS X)中Cocoa API的一部分,首次在Mac OS X 10.4 与iOS 3.0系统中出现。它允许按照实体-属性-值模型组织数据,并以XML,二进制文件或SQLite数据文件的格式将其序列化。Core Data允许用户使用代表实体和实体间关系的高层对象来操作数据。它也可以管理序列化的数据,提供对象生存期管理与object graph管理,包括存储。Core Data直接与SQLite交互,避免开发者使用原本的SQL语句。

就像Cocoa绑定在模型-视图-控制器设计中做了很多控制器的工作一样,Core Data做了很多数据模型的工作。它的主要任务是负责数据更改的管理,序列化到磁盘,最小化内存占用,以及查询数据。

专长于Core Data及Cocoa软件开发的信息图书作家Marcus Zarra曾说:

Core Data使用包括实体和实体间关系,以及查找符合某些条件的实体的请求等内容的高层数据模型描述数据。开发者可以在纯对象层上查找与管理这些数据,而不必担心存储和查找的实现细节。Interface Builder中的控制器对象可以直接获取与管理实体,若与Cocoa绑定结合,则可以在不写自定义代码的情况下让用户界面显示、修改与管理数据模型中的大部分内容。

例如:开发者希望开发一个管理vCard的程序。作者希望使用Core Data将一些vCard读入对象中,然后把它们存入一个大XML文件中。开发者需要在Xcode中创建数据模型,然后到Interface Builder中加入项以创建其数据模型对应的GUI。然后,开发者可以加入标准的Objective-C代码以读取vCard,并将数据写入由Core Data管理的实体中。在此,开发者的代码是管理Core Data对象,而非其对应的vCard。最后,将Save菜单项连接到控制器对象对应的方法上,使得控制器在接到消息后自动的检查数据堆栈,确认数据是否合法,最后利用当前更改重写对应的Core Data文档。在整个过程中,开发者只需要专注于将vCard文件转换为Core Data实体的过程,而不需关心例如数据的显示、合法性检查、存储等其它部分,提高了开发效率。

Core Data is organized into a large hierarchy of classes, though interaction is only prevalent with a small set of them. Core Data由相对庞大的类继承体系组成,但开发者需要关注的接口只是其中的一个相对小的子集。

Core Data可以将数据存储为XML,二进制文件或SQLite文件。在Mac OS X 10.5 及以后的版本中,开发者也可以通过继承NSPersistentStore类以创建自定义的存储格式。每种方法都有其优缺点,例如XML的可读性,SQLite的节约空间等。Core Data的这一方面类似于原始的Enterprise Objects Framework(EOF)系统,但EOF中开发者可以使用相对简洁的查询方式,而在Core Data中,只能使用一个语法类似SQL子集的查询语言,称为Predicate。

Core Data是标准化的,可以自由的读写Xcode数据模型文件(通常是.xcdatamodel文件)。与EOF不同,Core Data目前没有设计多用户或多线程访问模式。模型迁移通常也需要代码,若其它开发者依赖于某个数据模型,则该数据模型的设计者可能在模型发生改变时需要与新数据模型一起提供版本转换代码。

Core Data的很大一部分设计都归功于早期的NeXT产品,Enterprise Objects Framework(EOF)。

相关

  • 窦性心律在一周期的心脏律动中,如果心肌的去极化从窦房结开始,则称为窦性心律(英文:sinus rhythm)。其特点是心电图(ECG)中展示方向正确的P波(英语:P wave (electrocardiography))。窦性心律是
  • 邱奇-图灵论题邱奇-图灵论题(英语:Church–Turing thesis,又称邱奇-图灵猜想,邱奇论题,邱奇猜想,图灵论题)是一个关于可计算性理论的假设。该假设论述了关于函数特性的,可有效计算的函数值(用更现
  • 行天宫行天宫,或称恩主公庙,主神为关圣帝君(恩主公,从神为关平太子、周仓元帅),配祀吕、张、王、岳等恩主公,是台湾知名的关帝庙,由经营煤矿事业有成的黄玄空道长所建设而成。本宫位于台北
  • 古典古代古典时代(或称为古典时期、古典古代、古风时期,英语:Classical antiquity)是对希腊罗马世界(英语:Greco-Roman world)(以地中海为中心,包括古希腊和古罗马等一系列文明)的长期文化史的
  • 施泰尔马克州坐标:47°15′N 15°10′E / 47.250°N 15.167°E / 47.250; 15.167施泰尔马克州(德语:Steiermark),或依其英语名称译为施蒂利亚州(Styria),是奥地利的一个联邦州,位于奥地利的东南部
  • 上饶广信区原上饶县,是中国江西省上饶市所辖的一个区,位于江西省东北部,东与信州区、广丰区隔丰溪河为界,东北为玉山县界,西挨铅山县和横峰县,北临德兴市。南连福建省南平市浦城县、武
  • 宗教法宗教法系指基于宗教传统而导出的道德及伦理准则(英语:Ethical code),而不是依该个人的国籍、住所等。相关例子包括基督徒教会法、伊斯兰教伊斯兰教法、犹太人 哈拉卡及印度教法(
  • 日本深夜动画深夜动画是指在深夜时段播放的日本动画,通常在晚上23到28点播放。虽然没有明确的定义,但是该词目前主要指日本民营电视台(五大民营电视台及东京、大阪、名古屋等地的独立UHF电
  • 拉策堡大教堂坐标:53°42′14″N 10°46′30″E / 53.70389°N 10.77500°E / 53.70389; 10.77500拉策堡大教堂(德语:)是位于德国城市拉策堡的一座教堂。拉策堡大教堂始建于1160年,教堂内的管
  • 太田梦莉太田梦莉(日语:太田 夢莉,1999年12月1日-)是日本女艺人,为女子偶像团体NMB48 Team N前成员。奈良县出身,所属经纪公司为Showtitle。NMB48名义AKB48名义NMB48名义AKB48名义石田优美(