fbpx
维基百科

Core Data

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

Core Data
開發者苹果公司
操作系统macOSiOS
许可协议专有
网站Apple Developer Documentation

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

專長於Core Data及Cocoa軟體開發的資訊圖書作家Marcus Zarra曾說:

使用方法 编辑

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

例如:开发者希望开发一个管理vCard的程序。作者希望使用Core Data将一些vCard读入对象中,然后把它们存入一个大XML文件中。开发者需要在Xcode中建立数据模型,然后到Interface Builder中加入Core Data Entity项以创建其数据模型对应的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由相对庞大的类继承体系组成,但开发者需要关注的接口只是其中的一个相对小的子集。

类名 用途 关键方法
NSManagedObject
  • 数据对象
  • 管理属性
  • -entity
  • -valueForKey:
  • -setValue: forKey:
NSManagedObjectContext
  • 数据库
  • 获取与存储
  • -executeFetchRequest: error:
  • -save
NSManagedObjectModel
  • 数据模型
  • -entities
  • -fetchRequestTemplateForName:
  • -setFetchRequestTemplate: forName:
NSFetchRequest
  • 请求数据
  • -setEntity:
  • -setPredicate:
  • -setFetchBatchSize:
NSPersistentStoreCoordinator
  • 中介
  • 存储数据
  • -addPersistentStoreWithType: configuration: URL: options: error:
  • -persistentStoreForURL:
NSPredicate
  • 确定查询条件
  • +predicateWithFormat:
  • -evaluateWithObject:

[3][2][4][5]

存储格式 编辑

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

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

历史与发展 编辑

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

脚注 编辑

  1. ^ Apple, "Core Data Tutorial for iPhone OS".
  2. ^ 2.0 2.1 2.2 Apple, "Core Data Programming Guide".
  3. ^ 3.0 3.1 Zarra, Core Data.
  4. ^ Stevenson, "Core Data类总览"
  5. ^ Jurewitz, "使用Core Data"
  6. ^ Apple, Predicate Programming Guide
  7. ^ Apple, "EOModeler User Guide"

参考文献 编辑

  • 苹果公司 (2009年9月17日). "Core Data Programming Guide". Retrieved from http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html(页面存档备份,存于互联网档案馆
  • 苹果公司 (2009年9月). "Core Data Tutorial for iPhone OS". Retrieved from
  • 苹果公司 (2010年6月14日). Predicate Programming Guide. 来自[1](页面存档备份,存于互联网档案馆
  • 苹果公司 (2006年). "EOModeler User Guide". Retrieved from http://developer.apple.com/legacy/mac/library/documentation/WebObjects/UsingEOModeler/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001018-CH201-TP1(页面存档备份,存于互联网档案馆
  • Jurewitz, M. & Apple Inc. (2010). "iPhone Development Videos: Working With Core Data". Retrieved from http://developer.apple.com/videos/iphone/#video-advanced-coredata(页面存档备份,存于互联网档案馆
  • Stevenson, S. (2005). "Core Data Class Overview". Retrieved from http://cocoadevcentral.com/articles/000086.php(页面存档备份,存于互联网档案馆
  • Zarra, M. S. (2009). Core Data Apple's API for Persisting Data on Mac OS X. The Pragmatic Programmers.
  • LaMarche, J., & Mark, D. (2009). More iPhone 3 Development: Tackling iPhone SDK 3. Apress.

外部链接 编辑

  • Apple Inc. (2006). "Developing With Core Data". Retrieved from http://developer.apple.com/macosx/coredata.html(页面存档备份,存于互联网档案馆
  • Apple Inc. (2009). "Web Objects Tutorial". Retrieved from http://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/Conceptual/WOTutorial/Introduction/Introduction.html(页面存档备份,存于互联网档案馆
  • CocoaDev. (n.d.). Retrieved from
  • Stevenson, S. (2005). "Build A Core Data Application". Retrieved from http://cocoadevcentral.com/articles/000085.php(页面存档备份,存于互联网档案馆

core, data, 是蘋果公司所開發的macos作業系統, 舊稱, x及os, 中cocoa, api的一部分, 首次在mac, tiger与ios, 0系统中出现, 它允许按照实体, 属性, 值模型组织数据, 并以xml, 二进制文件或sqlite数据文件的格式将其序列化, 允许用户使用代表实体和实体间关系的高层对象来操作数据, 它也可以管理序列化的数据, 提供对象生存期管理与object, graph管理, 包括存储, 直接与sqlite交互, 避免开发者使用原本的sql语句, 開發者苹果公司操作系统mac. Core Data是蘋果公司所開發的macOS作業系統 舊稱 Mac OS X及OS X 中Cocoa API的一部分 首次在Mac OS X 10 4 Tiger与iOS 3 0系统中出现 1 它允许按照实体 属性 值模型组织数据 并以XML 二进制文件或SQLite数据文件的格式将其序列化 Core Data允许用户使用代表实体和实体间关系的高层对象来操作数据 它也可以管理序列化的数据 提供对象生存期管理与object graph管理 包括存储 Core Data直接与SQLite交互 避免开发者使用原本的SQL语句 2 Core Data開發者苹果公司操作系统macOS iOS许可协议专有网站Apple Developer Documentation就像Cocoa绑定在模型 视图 控制器设计中做了很多控制器的工作一样 Core Data做了很多数据模型的工作 它的主要任务是负责数据更改的管理 序列化到磁盘 最小化内存占用 以及查询数据 專長於Core Data及Cocoa軟體開發的資訊圖書作家Marcus Zarra曾說 简单的说 Core Data就是可以存储到磁盘的对象图 Core Data可以帮我们做很多工作 它可以作为软件的整个模型层 它不仅仅在磁盘上存储数据 也把我们需要的数据对象读取到内存中 3 目录 1 使用方法 2 存储格式 3 历史与发展 4 脚注 5 参考文献 6 外部链接使用方法 编辑Core Data使用包括实体和实体间关系 以及查找符合某些条件的实体的请求等内容的高层数据模型描述数据 开发者可以在纯对象层上查找与管理这些数据 而不必担心存储和查找的实现细节 Interface Builder中的控制器对象可以直接获取与管理实体 若与Cocoa绑定结合 则可以在不写自定义代码的情况下让用户界面显示 修改与管理数据模型中的大部分内容 例如 开发者希望开发一个管理vCard的程序 作者希望使用Core Data将一些vCard读入对象中 然后把它们存入一个大XML文件中 开发者需要在Xcode中建立数据模型 然后到Interface Builder中加入Core Data Entity项以创建其数据模型对应的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由相对庞大的类继承体系组成 但开发者需要关注的接口只是其中的一个相对小的子集 类名 用途 关键方法NSManagedObject 数据对象 管理属性 entity valueForKey setValue forKey NSManagedObjectContext 数据库 获取与存储 executeFetchRequest error saveNSManagedObjectModel 数据模型 entities fetchRequestTemplateForName setFetchRequestTemplate forName NSFetchRequest 请求数据 setEntity setPredicate setFetchBatchSize NSPersistentStoreCoordinator 中介 存储数据 addPersistentStoreWithType configuration URL options error persistentStoreForURL NSPredicate 确定查询条件 predicateWithFormat evaluateWithObject 3 2 4 5 存储格式 编辑Core Data可以将数据存储为XML 二进制文件或SQLite文件 2 在Mac OS X 10 5 Leopard及以后的版本中 开发者也可以通过继承NSPersistentStore类以创建自定义的存储格式 每种方法都有其优缺点 例如XML的可读性 SQLite的节约空间等 Core Data的这一方面类似于原始的Enterprise Objects Framework EOF 系统 但EOF中开发者可以使用相对简洁的查询方式 而在Core Data中 只能使用一个语法类似SQL子集的查询语言 称为Predicate 6 Core Data是标准化的 可以自由的读写Xcode数据模型文件 通常是 xcdatamodel文件 与EOF不同 Core Data目前没有设计多用户或多线程访问模式 模型迁移通常也需要代码 若其它开发者依赖于某个数据模型 则该数据模型的设计者可能在模型发生改变时需要与新数据模型一起提供版本转换代码 历史与发展 编辑Core Data的很大一部分设计都归功于早期的NeXT产品 Enterprise Objects Framework EOF 7 脚注 编辑 Apple Core Data Tutorial for iPhone OS 2 0 2 1 2 2 Apple Core Data Programming Guide 3 0 3 1 Zarra Core Data Stevenson Core Data类总览 Jurewitz 使用Core Data Apple Predicate Programming Guide Apple EOModeler User Guide 参考文献 编辑苹果公司 2009年9月17日 Core Data Programming Guide Retrieved from http developer apple com iphone library documentation Cocoa Conceptual CoreData cdProgrammingGuide html 页面存档备份 存于互联网档案馆 苹果公司 2009年9月 Core Data Tutorial for iPhone OS Retrieved from https web archive org web 20100323200755 http developer apple com iPhone library documentation DataManagement Conceptual iPhoneCoreData01 Introduction Introduction html 苹果公司 2010年6月14日 Predicate Programming Guide 来自 1 页面存档备份 存于互联网档案馆 苹果公司 2006年 EOModeler User Guide Retrieved from http developer apple com legacy mac library documentation WebObjects UsingEOModeler Introduction Introduction html apple ref doc uid TP30001018 CH201 TP1 页面存档备份 存于互联网档案馆 Jurewitz M amp Apple Inc 2010 iPhone Development Videos Working With Core Data Retrieved from http developer apple com videos iphone video advanced coredata 页面存档备份 存于互联网档案馆 Stevenson S 2005 Core Data Class Overview Retrieved from http cocoadevcentral com articles 000086 php 页面存档备份 存于互联网档案馆 Zarra M S 2009 Core Data Apple s API for Persisting Data on Mac OS X The Pragmatic Programmers LaMarche J amp Mark D 2009 More iPhone 3 Development Tackling iPhone SDK 3 Apress 外部链接 编辑Apple Inc 2006 Developing With Core Data Retrieved from http developer apple com macosx coredata html 页面存档备份 存于互联网档案馆 Apple Inc 2009 Web Objects Tutorial Retrieved from http developer apple com legacy mac library documentation DeveloperTools Conceptual WOTutorial Introduction Introduction html 页面存档备份 存于互联网档案馆 CocoaDev n d Retrieved from https web archive org web 20080801025517 http www cocoadev com Stevenson S 2005 Build A Core Data Application Retrieved from http cocoadevcentral com articles 000085 php 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title Core Data amp oldid 64128061, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。