gpt4 book ai didi

core-data - 核心数据 : differences between managed object and entities?

转载 作者:行者123 更新时间:2023-12-04 16:48:55 24 4
gpt4 key购买 nike

我想了解更多核心数据,为什么我们“获取”和搜索实体而实体在“内部”托管对象?例如 :

NSManagedObjectContext *moc = [self managedObjectContext];  
NSEntityDescription *entityDescription =
[NSEntityDescription entityForName:@"Employee" inManagedObjectContext:moc];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];

另外,持久对象存储包含什么?如果我理解,持久对象存储从一个 sqlite 文件中获取数据,但是它有点困惑,是不是:一个实体,一个持久对象存储,一个 SQLite 文件中的数据?

谢谢你的回答

保罗

最佳答案

基本上这里有5个组件。持久存储协调器、托管对象上下文、托管对象模型、实体和托管对象。它们共同提供了一个对象图管理系统(请注意,Core Data 是 而不是 一个 ORM,所以不要这样想是有帮助的)。下面是对组件和 CoreData 中与它们交互的各种其他类的描述

  • NSPersistentStoreCoordinator - 处理从磁盘加载数据。它处理各种商店( NSPersistentStore )。包含的存储类型是二进制、XML 和 SQLite。您可以编写自己的商店(使用 NSAtomicStoreNSIncrementalStore 类),例如,如果您有自己的文件类型(理论上,如果需要,您可以编写商店来打开 Word 或 Photoshop 文件)
  • NSEntityDescription - 可以将实体视为托管对象的“类”。它定义了托管对象应具有的任何属性( NSAttributeDescription )、关系( NSRelationshipDescription )和获取的属性( NSFetchedPropertyDescription ),以及其他属性,例如 NSManagedObject应该使用的子类
  • NSManagedObjectContext - 这是内存中的“便笺簿”。它是您查询对象(使用 NSFetchRequests )、创建对象、删除对象等的地方。您可以拥有多个上下文,并在不保存的情况下丢弃一个上下文以丢弃您不再需要的任何更改。
  • NSManagedObject - Core Data 的核心单元。这些是保存数据的模型对象。您可以在它们上设置属性、关系等。
  • NSManagedObjectModel - 这表示用于数据的数据模型,通常在 Xcode 中创建的 .mom 文件中定义。这是存储所有实体的地方。

  • 这几乎是全部核心数据。还有一些其他类用于进行迁移和合并

    关于core-data - 核心数据 : differences between managed object and entities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6904024/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com