<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Core_Data</id>
	<title>Core Data - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Core_Data"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Core_Data&amp;action=history"/>
	<updated>2026-06-27T19:24:23Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Core_Data&amp;diff=713227&amp;oldid=prev</id>
		<title>imported&gt;Ddmmyyy8 来自 2026年2月4日 (三) 08:18</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Core_Data&amp;diff=713227&amp;oldid=prev"/>
		<updated>2026-02-04T08:18:20Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA|G1=IT}}&lt;br /&gt;
{{Infobox software&lt;br /&gt;
|name = Core Data&lt;br /&gt;
|logo= [[Image:Macosx_data_coredata_20090925.png|Core Data|96px]]&lt;br /&gt;
|developer = [[苹果公司]]&lt;br /&gt;
|operating_system = [[macOS]]、[[iOS]]&lt;br /&gt;
|license = [[专有软件|专有]]&lt;br /&gt;
|website = [https://developer.apple.com/documentation/coredata Apple Developer Documentation]&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Core Data&amp;#039;&amp;#039;&amp;#039;是[[蘋果公司]]所開發的[[macOS]][[作業系統]]（舊稱：Mac OS X及OS X）中[[Cocoa]] [[API]]的一部分，首次在[[Mac OS X v10.4|Mac OS X 10.4 &amp;#039;&amp;#039;Tiger&amp;#039;&amp;#039;]]与[[iOS]] 3.0系统中出现&amp;lt;ref name=iphonetut&amp;gt; Apple, &amp;quot;Core Data Tutorial for iPhone OS&amp;quot;.&amp;lt;/ref&amp;gt;。它允许按照[[实体-属性-值模型]]组织数据，并以[[XML]]，[[二进制文件]]或[[SQLite]]数据文件的格式将其[[序列化]]。Core Data允许用户使用代表实体和实体间关系的高层对象来操作数据。它也可以管理序列化的数据，提供[[对象生存期]]管理与[[object graph]]管理，包括存储。Core Data直接与[[SQLite]]交互，避免开发者使用原本的[[SQL]]语句&amp;lt;ref name=coredataref&amp;gt; Apple, &amp;quot;Core Data Programming Guide&amp;quot;.&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
就像[[Cocoa绑定]]在[[模型-视图-控制器]]设计中做了很多控制器的工作一样，Core Data做了很多数据模型的工作。它的主要任务是负责数据更改的管理，序列化到磁盘，最小化内存占用，以及查询数据。&lt;br /&gt;
&lt;br /&gt;
專長於Core Data及Cocoa軟體開發的資訊圖書作家Marcus Zarra曾說：&lt;br /&gt;
{{cquote|简单的说，Core Data就是可以存储到磁盘的对象图，[...]Core Data可以帮我们做很多工作。它可以作为软件的整个[[MVC|模型层]]。它不仅仅在磁盘上存储数据，也把我们需要的数据对象读取到内存中。&amp;lt;ref name=Zarra2009&amp;gt;Zarra, &amp;#039;&amp;#039;Core Data&amp;#039;&amp;#039;.&amp;lt;/ref&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==使用方法==&lt;br /&gt;
Core Data使用包括实体和实体间关系，以及查找符合某些条件的实体的请求等内容的高层数据模型描述数据。开发者可以在纯对象层上查找与管理这些数据，而不必担心存储和查找的实现细节。[[Interface Builder]]中的控制器对象可以直接获取与管理实体，若与Cocoa绑定结合，则可以在不写自定义代码的情况下让用户界面显示、修改与管理数据模型中的大部分内容。&lt;br /&gt;
&lt;br /&gt;
例如：开发者希望开发一个管理[[vCard]]的程序。作者希望使用Core Data将一些vCard读入对象中，然后把它们存入一个大XML文件中。开发者需要在Xcode中建立数据模型，然后到Interface Builder中加入&amp;#039;&amp;#039;Core Data Entity&amp;#039;&amp;#039;项以创建其数据模型对应的GUI。然后，开发者可以加入标准的[[Objective-C]]代码以读取vCard，并将数据写入由Core Data管理的实体中。在此，开发者的代码是管理Core Data对象，而非其对应的vCard。最后，将&amp;lt;code&amp;gt;Save&amp;lt;/code&amp;gt;菜单项连接到控制器对象对应的方法上，使得控制器在接到&amp;#039;&amp;#039;存储&amp;#039;&amp;#039;消息后自动的检查数据堆栈，确认数据是否合法，最后利用当前更改重写对应的Core Data文档。在整个过程中，开发者只需要专注于将vCard文件转换为Core Data实体的过程，而不需关心例如数据的显示、合法性检查、存储等其它部分，提高了开发效率。&lt;br /&gt;
&lt;br /&gt;
Core Data is organized into a large hierarchy of classes, though interaction is only prevalent with a small set of them. &lt;br /&gt;
Core Data由相对庞大的类继承体系组成，但开发者需要关注的接口只是其中的一个相对小的子集。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! 类名 !! 用途 !! 关键方法&lt;br /&gt;
|-&lt;br /&gt;
| NSManagedObject &lt;br /&gt;
| &lt;br /&gt;
* 数据对象&lt;br /&gt;
* 管理属性&lt;br /&gt;
|&lt;br /&gt;
* -entity&lt;br /&gt;
* -valueForKey:&lt;br /&gt;
* -setValue: forKey:&lt;br /&gt;
|-&lt;br /&gt;
| NSManagedObjectContext&lt;br /&gt;
| &lt;br /&gt;
* 数据库&lt;br /&gt;
* 获取与存储&lt;br /&gt;
|&lt;br /&gt;
* -executeFetchRequest: error:&lt;br /&gt;
* -save&lt;br /&gt;
|-&lt;br /&gt;
| NSManagedObjectModel &lt;br /&gt;
|&lt;br /&gt;
* 数据模型&lt;br /&gt;
| &lt;br /&gt;
* -entities&lt;br /&gt;
* -fetchRequestTemplateForName:&lt;br /&gt;
* -setFetchRequestTemplate: forName:&lt;br /&gt;
|-&lt;br /&gt;
| NSFetchRequest &lt;br /&gt;
| &lt;br /&gt;
* 请求数据&lt;br /&gt;
|&lt;br /&gt;
* -setEntity:&lt;br /&gt;
* -setPredicate:&lt;br /&gt;
* -setFetchBatchSize:&lt;br /&gt;
|-&lt;br /&gt;
| NSPersistentStoreCoordinator &lt;br /&gt;
|  &lt;br /&gt;
* 中介&lt;br /&gt;
* 存储数据&lt;br /&gt;
| &lt;br /&gt;
* -addPersistentStoreWithType: configuration: URL: options: error:&lt;br /&gt;
* -persistentStoreForURL:&lt;br /&gt;
|-&lt;br /&gt;
| NSPredicate&lt;br /&gt;
|&lt;br /&gt;
* 确定查询条件&lt;br /&gt;
|&lt;br /&gt;
* +predicateWithFormat:&lt;br /&gt;
* -evaluateWithObject:&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;ref name=Zarra2009/&amp;gt;&amp;lt;ref name=coredataref/&amp;gt;&amp;lt;ref name=stevensonclasses&amp;gt; Stevenson, &amp;quot;Core Data类总览&amp;quot;&amp;lt;/ref&amp;gt;&amp;lt;ref name=jurewitzvideo&amp;gt; Jurewitz, &amp;quot;使用Core Data&amp;quot;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==存储格式==&lt;br /&gt;
Core Data可以将数据存储为XML，二进制文件或SQLite文件&amp;lt;ref name=coredataref/&amp;gt;。在[[Mac OS X v10.5|Mac OS X 10.5 &amp;#039;&amp;#039;Leopard&amp;#039;&amp;#039;]]及以后的版本中，开发者也可以通过继承NSPersistentStore类以创建自定义的存储格式。每种方法都有其优缺点，例如XML的可读性，SQLite的节约空间等。Core Data的这一方面类似于原始的{{link-en|Enterprise Objects Framework}}（EOF）系统，但EOF中开发者可以使用相对简洁的查询方式，而在Core Data中，只能使用一个语法类似[[SQL]][[子集]]的查询语言，称为[[Predicate]]&amp;lt;ref&amp;gt;Apple, &amp;#039;&amp;#039;Predicate Programming Guide&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
Core Data是标准化的，可以自由的读写Xcode数据模型文件（通常是.xcdatamodel文件）。与EOF不同，Core Data目前没有设计多用户或多线程访问模式。模型迁移通常也需要代码，若其它开发者依赖于某个数据模型，则该数据模型的设计者可能在模型发生改变时需要与新数据模型一起提供版本转换代码。&lt;br /&gt;
&lt;br /&gt;
==历史与发展==&lt;br /&gt;
&lt;br /&gt;
Core Data的很大一部分设计都归功于早期的[[NeXT]]产品，{{link-en|Enterprise Objects Framework}}（EOF）&amp;lt;ref name=eof&amp;gt; Apple, &amp;quot;EOModeler User Guide&amp;quot;&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 脚注 ==&lt;br /&gt;
{{Reflist|2}}&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
* 苹果公司 (2009年9月17日). &amp;quot;Core Data Programming Guide&amp;quot;. Retrieved from [http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CoreData/cdProgrammingGuide.html http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html]{{Wayback|url=http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CoreData/cdProgrammingGuide.html |date=20100905100839 }}&lt;br /&gt;
* 苹果公司 (2009年9月). &amp;quot;Core Data Tutorial for iPhone OS&amp;quot;. Retrieved from [https://web.archive.org/web/20100323200755/http://developer.apple.com/iPhone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html https://web.archive.org/web/20100323200755/http://developer.apple.com/iPhone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html]&lt;br /&gt;
* 苹果公司 (2010年6月14日). &amp;#039;&amp;#039;Predicate Programming Guide&amp;#039;&amp;#039;. 来自[http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Predicates/predicates.html%23//apple_ref/doc/uid/TP40001789]{{Wayback|url=http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Predicates/predicates.html%23//apple_ref/doc/uid/TP40001789 |date=20160818224729 }}&lt;br /&gt;
* 苹果公司 (2006年). &amp;quot;EOModeler User Guide&amp;quot;. Retrieved from [http://developer.apple.com/legacy/mac/library/documentation/WebObjects/UsingEOModeler/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001018-CH201-TP1 http://developer.apple.com/legacy/mac/library/documentation/WebObjects/UsingEOModeler/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001018-CH201-TP1]{{Wayback|url=http://developer.apple.com/legacy/mac/library/documentation/WebObjects/UsingEOModeler/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001018-CH201-TP1 |date=20100509183658 }}&lt;br /&gt;
* Jurewitz, M. &amp;amp; Apple Inc. (2010). &amp;quot;iPhone Development Videos: Working With Core Data&amp;quot;. Retrieved from [http://developer.apple.com/videos/iphone/#video-advanced-coredata http://developer.apple.com/videos/iphone/#video-advanced-coredata]{{Wayback|url=http://developer.apple.com/videos/iphone/#video-advanced-coredata |date=20100926204452 }}&lt;br /&gt;
* Stevenson, S. (2005). &amp;quot;Core Data Class Overview&amp;quot;. Retrieved from [http://cocoadevcentral.com/articles/000086.php http://cocoadevcentral.com/articles/000086.php]{{Wayback|url=http://cocoadevcentral.com/articles/000086.php |date=20060908041938 }}&lt;br /&gt;
* Zarra, M. S. (2009). &amp;#039;&amp;#039;Core Data Apple&amp;#039;s API for Persisting Data on Mac OS X&amp;#039;&amp;#039;. The Pragmatic Programmers.&lt;br /&gt;
* LaMarche, J., &amp;amp; Mark, D. (2009).  &amp;#039;&amp;#039;More iPhone 3 Development: Tackling iPhone SDK 3&amp;#039;&amp;#039;. Apress.&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* Apple Inc. (2006). &amp;quot;Developing With Core Data&amp;quot;. Retrieved from [http://developer.apple.com/macosx/coredata.html http://developer.apple.com/macosx/coredata.html]{{Wayback|url=http://developer.apple.com/macosx/coredata.html |date=20100819130521 }}&lt;br /&gt;
* Apple Inc. (2009). &amp;quot;Web Objects Tutorial&amp;quot;. Retrieved from [http://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/Conceptual/WOTutorial/Introduction/Introduction.html http://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/Conceptual/WOTutorial/Introduction/Introduction.html]{{Wayback|url=http://developer.apple.com/legacy/mac/library/documentation/DeveloperTools/Conceptual/WOTutorial/Introduction/Introduction.html |date=20100906221404 }}&lt;br /&gt;
* CocoaDev. (n.d.). Retrieved from [https://web.archive.org/web/20080801025517/http://www.cocoadev.com/ https://web.archive.org/web/20080801025517/http://www.cocoadev.com/]&lt;br /&gt;
* Stevenson, S. (2005). &amp;quot;Build A Core Data Application&amp;quot;. Retrieved from [http://cocoadevcentral.com/articles/000085.php http://cocoadevcentral.com/articles/000085.php]{{Wayback|url=http://cocoadevcentral.com/articles/000085.php |date=20060903073259 }}&lt;br /&gt;
&lt;br /&gt;
{{Core Foundation}}&lt;br /&gt;
{{MacOS}}&lt;br /&gt;
&lt;br /&gt;
[[Category:NeXT]]&lt;br /&gt;
[[Category:MacOS使用者介面]]&lt;br /&gt;
[[Category:数据建模]]&lt;br /&gt;
[[Category:数据管理]]&lt;br /&gt;
[[Category:苹果手机]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Ddmmyyy8</name></author>
	</entry>
</feed>