我想了解更多核心数据,为什么我们要“获取”并搜索实体,而实体位于“内部”托管对象?例如 :
NSManagedObjectContext *moc = [self managedObjectContext];
NSEntityDescription *entityDescription =
[NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
另外,持久对象存储包含什么?如果我理解的话,持久对象存储从 sqlite 文件中获取数据,但随后它会变得有点混乱,是不是:一个实体,一个持久对象存储,一个 sqlite 文件内的数据?
感谢您的回答
Paul
基本上这里有 5 个组件。持久存储协调器、托管对象上下文、托管对象模型、实体和托管对象。它们一起工作来提供一个对象图管理系统(请注意,Core Data 是notORM,所以不要这样想会有所帮助)。下面是 CoreData 中与它们交互的组件和各种其他类的描述
-
NSPersistentStoreCoordinator
- 这处理从磁盘加载数据和从磁盘加载数据。它涉及各种商店(NSPersistentStore
)。包含的存储类型有二进制、XML 和 SQLite。您可以编写自己的商店(使用NSAtomicStore
and NSIncrementalStore
类),例如,如果您有自己的文件类型(理论上,如果需要,您可以编写一个存储来打开 Word 或 Photoshop 文件)
-
NSEntityDescription
- 实体可以被视为托管对象的“类”。它定义了任何属性(NSAttributeDescription
)、关系(NSRelationshipDescription
)和获取的属性(NSFetchedPropertyDescription
)被管理对象应具有的属性,以及其他属性,例如NSManagedObject
应该使用的子类
-
NSManagedObjectContext
- 这是内存中的“便笺本”。这是您查询对象的地方(使用NSFetchRequests
)、创建对象、删除对象等。您可以拥有多个上下文,然后在不保存的情况下丢弃一个上下文,以丢弃不再需要的任何更改。
-
NSManagedObject
- 核心数据的核心单元。这些是保存数据的模型对象。您可以在它们上设置属性、关系等。
-
NSManagedObjectModel
- 这代表用于数据的数据模型,通常在 Xcode 中创建的 .mom 文件中定义。这是存储所有实体的地方。
这几乎就是全部核心数据。还有一些其他类用于进行迁移和合并
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)