Core Data

✍ dations ◷ 2025-11-09 21:11:45 #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)。

相关

  • span class=chemf style=white-space:nowrap;Csub18/sub十八烷是一种有机化合物,一种化学式为C18H38的烷烃,室温下为固体。
  • 罗伊·克尔罗伊·帕特里克·克尔,CNZM(英语:New Zealand Order of Merit)(英语:Roy Patrick Kerr,1934年5月16日-),新西兰数学家,爱因斯坦场方程的精确解、描述一旋转大质量天体(例如克尔黑洞)周遭
  • 海百合海百合纲(学名:Crinoidea)是一群始见于奥陶纪的棘皮动物,生活于海里,具多条腕足,身体呈花状,表面有石灰质的壳;化石种类有5000种以上。古生代石炭纪时,海百合数量极庞大,品种繁多,可归
  • 泥炭藓泥炭藓(学名:Sphagnum palustre)为泥炭藓科泥炭藓属下的一个种。像这种类型的其他苔藓它可以吸收的水可达自身干重量的30倍,这归功于其弹性螺旋纤维。
  • 流动性陷阱流动性陷阱(英语:liquidity trap),是英国经济学家凯恩斯提出的概念,又称凯恩斯陷阱。在凯恩斯主义经济学中,流动性陷阱是指一个当货币政策完全没法刺激经济的情况,无论降低利率抑或
  • 白兰 (电影)《白兰》(韩语:파이란,英语:),是2001年上映的一出韩国电影,改编自浅田次郎短篇小说《情书》。张柏芝凭本片获得第39届韩国电影大钟奖最佳女主角提名。两颗异地的心﹐既近亦远……。母
  • 武威县武威县,中国曾经设置的一个县,在今甘肃省武威市凉州区。武周证圣元年(695年),并武威县入神乌县,改神乌县为武威县,武威县与姑臧县同为凉州附郭县。唐朝神龙元年(705年),复武威县为神乌
  • 春秋大事表《春秋大事表》,共五十卷,清代学者顾栋高(1679年-1759年)著。顾栋高一生钻研经学,尤精于《春秋》。所著《春秋大事表》五十卷,将春秋列国诸事,排比成表,分为时令、朔闰、长历拾遗、疆
  • 再见掰掰 (安-玛莉歌曲)参见榜单表现参见销量认证《再见掰掰》(英语:Ciao Adios)是英国创作歌手安-玛莉首张专辑《说出你的想法》的第二主打歌,于2017年2月10日 (2017-02-10)由Major Tom's和庇护所唱片在全球数位发行。这是一首受舞厅流行影响的歌曲。歌曲讲述一名女生发现另一半有外遇,而“Ciao”和“Adiós”在意大利语和西班牙语均指“再见”,即是指这段恋情已经告吹。 *仅含认证的实际销量^仅含认证的出货量仅含认证的流媒体+实际销量
  • 康斯坦丝 (诺曼底)康斯坦丝(英语Constance,1060年代约1066年-1090年),布列塔尼公爵夫人。征服者威廉和佛兰德斯的玛蒂尔达的一个女儿。在威廉一世的所有女儿之中,她被认为是上帝的的礼物。因为得到她母亲的喜爱,所以她和布列塔尼的艾伦四世的婚姻被推迟到1086年。康斯坦丝没有孩子。她逝世于1090年8月13日,原因可能是中毒,最终被埋葬于雷敦(Redon)的圣梅兰(St Melans),1672年,她的陵墓被发现并被发掘,尸体被一些羊毛纺织品碎片包裹者,以及一个铅制的十字架和她的碑文雕刻。碑文上有她的父亲、丈夫