《iOS 8开发指南(第2版)》——第6章,第6.4节数据模型
本节书摘来自异步社区《iOS 8开发指南(第2版)》一书中的第6章,第6.4节数据模型,作者 管蕾,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.4 数据模型
iOS 8开发指南(第2版)
Core Data抽象了应用程序和底层数据存储之间的交互。它还包含一个Xcode建模工具,该工具像Interface Builder那样可帮助我们设计应用程序,但不是让我们能够以可视化的方式创建界面,而是让我们以可视化方式建立数据结构。Core Data是Cocoa中处理数据、绑定数据的关键特性,其重要性不言而喻,但也比较复杂。
下面先给出一个如图6-1所示的类关系图。
 (1)Managed Object Model
Managed Object Model是描述应用程序的数据模型,这个模型包含实体(Entity)、特性(Property),读取请求(Fetch Request)等。
(2)Managed Object Context
Managed Object Context参与对数据对象进行各种操作的全过程,并监测数据对象的变化,以提供对 undo/redo 的支持及更新绑定到数据的 UI。
(3)Persistent Store Coordinator
Persistent Store Coordinator 相当于数据文件管理器,处理底层的对数据文件的读取与写入,一般我们无需与它打交道。
(4)Managed Object Managed Object数据对象
与 Managed Object Context相关联。
(5)Controller图中绿色的Array Controller、Object Controller和Tree Controller
这些控制器一般都是通过“control+drag”将Managed Object Context绑定到它们,这样就可以在 nib 中以可视化地方式操作数据。
上述模块的运作流程如下所示。
(1)应用程序先创建或读取模型文件(后缀为xcdatamodeld)生成 NSManagedObjectModel 对象。Document应用程序是一般是通过 NSDocument 或其子类 NSPersistentDocument)从模型文件(后缀为 xcdatamodeld)读取。
(2)然后生成 NSManagedObjectContext 和 NSPersistentStoreCoordinator 对象,前者对用户透明地调用后者对数据文件进行读写。
(3)NSPersistentStoreCoordinator从数据文件(XML、SQLite、二进制文件等)中读取数据生成 Managed Object,或保存Managed Object写入数据文件。
(4)NSManagedObjectContext对数据进行各种操作的整个过程,它持有 Managed Object。我们通过它来监测 Managed Object。监测数据对象有两个作用:支持 undo/redo 以及数据绑定。这个类是最常被用到的。
(5)Array Controller、Object Controller和Tree Controller等控制器一般与 NSManagedObject-Context 关联,因此,可以通过它们在nib 中可视化地操作数据对象。
关注公众号
					低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 
							
								
								    上一篇
								    
								
								《深入解析Android 虚拟机》——第2章,第2.5节内存异常和垃圾处理
本节书摘来自异步社区《深入解析Android 虚拟机》一书中的第2章,第2.5节内存异常和垃圾处理,作者 钟世礼,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 内存异常和垃圾处理对于C和C++的开发人员来说,在内存管理领域应该能够游刃有余。在计算机系统中,内存负责维护每一个对象生命的从开始到终结。Java内存分配与管理是Java的核心技术之一,通常Java在内存分配时会涉及到以下区域。 寄存器:在程序中无法控制。栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。堆:存放用new产生的数据。静态域:存放在对象中用static定义的静态成员。常量池:存放常量。非RAM存储:硬盘等永久存储空间。 2.5.1 内存分配中的栈和堆1.栈在函数中定义的一些基本类型的变量数据,还有对象的引用变量都在函数的栈内存中分配。当在一段代码块中定义一个变量时,Java就在栈中为这个变量分配内存空间;当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 栈也称为栈内存,是Java程序的运行区,是在线程创建时创建,它的生命期跟...
 - 
							
								
								    下一篇
								    
								
								《Android游戏开发详解》——第1章,第1.7节控制流程第1部分——if和else语句
本节书摘来自异步社区《Android游戏开发详解》一书中的第1章,第1.7节控制流程第1部分——if和else语句,作者 【美】Jonathan S. Harbour,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.7 控制流程第1部分——if和else语句Android游戏开发详解我们现在把注意力转向控制流程(control flow ,也称为流程控制,flow control),这指的是代码行将要按照什么样的顺序执行。还记得代码执行的基本规则吧,它是说代码要从上到下地执行。在最简单的程序中,代码真的是按照线性方式从上向下执行的。然而,在任何有用的程序中,我们可能会看到,根据某些条件,会跳过一些代码行甚至重复执行一些代码行。让我们来看一些例子。 1.7.1 if-else语句块if-else语句块用来在代码中创建分支或多条路径。例如,我们可以检查如characterLevel > 10这样的条件来判断一个字符串内容,如图1-6所示。根据characterLevel的值,游戏可以执行不同的指令。你可以看到图1-4中有3条路径。 我们可以创建比上面的例子具有更多或更少分支的...
 
相关文章
文章评论
共有0条评论来说两句吧...

			
				
				
				
				
				
				
				
微信收款码
支付宝收款码