*> *entitiesByName; //存放数据中所有实体描述对象 @property (strong) NSArray<NSEntityDescription *> *entities; //返回所有可用的配置名称 : 实体类似于数据库中的表结构,例如上次我们创建的班级实体模型,一个实体模型中可以添加许多属性与关系,NSEntityDescription对象中存放这些信息,常用如下: //实体所在的模型管理对象 @ *> *subentitiesByName; //所有子类实体对象数组 @property (strong) NSArray<NSEntityDescription *> *subentities; //父类实体 @property (nullable, readonly, assign) NSEntityDescription *superentity; //所有属性字典 @property (readonly *)entity; //判断是否是某种实体 - (BOOL)isKindOfEntity:(NSEntityDescription *)entity; NSPropertyDescription类是数据模型属性的父类
NSManagedObject *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext *person = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:_context]; request.entity *person = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:_context]; request.entity *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:_context]; request.entity *entity = [NSEntityDescription entityForName:@"Man" inManagedObjectContext:container.viewContext];
AppDelegate 10 let managedObjectContext = appDelegate.managedObjectContext 11 12 let newUser = NSEntityDescription.insertNewObject AppDelegate 11 let managedObjectContext = appDelegate.managedObjectContext 12 13 let entity:NSEntityDescription = NSEntityDescription.entity(forEntityName:“User”, 14 in:managedObjectContext) 15 let request = NSFetchRequest AppDelegate 9 let managedObjectContext = appDelegate.managedObjectContext 10 11 let entity:NSEntityDescription = NSEntityDescription.entity(forEntityName:“User”, 12 in:managedObjectContext) 13 let request = NSFetchRequest
NSEntityDescription是实体描述对象,它可以类比如数据库中的表,NSEntityDescription存放的是表的结构信息。 setPersistentStoreCoordinator:psc]; //创建数据对象 /* 数据对象的创建是通过实体名获取到的 */ SchoolClass * modelS = [NSEntityDescription
实体描述NSEntityDescription:该对象代表了关于某个实体的描述信息,从某种程度来说,该对象相当于实体的抽象。 添加实体 添加实体的步骤如下: 调用NSEntityDescription的insertNewObjectForEntityForName:inManagedObjectContext:静态方法添加新实体 如下代码片段: // 控制Core Data在托管对象上下文中创建一个新实体 Bison* bison = [NSEntityDescription 然后通过NSEntityDescription对象设置NSFetchRequest对象将要抓取的实体。如果需要对抓取结果进行筛选,则需要通过NSPredicate对象设置筛选条件。 // 创建抓取数据的请求对象 NSFetchRequest *request = [[NSFetchRequest alloc] init]; // 设置要抓取哪种类型的实体 NSEntityDescription
主要的 Model class 有: 1)Entity - NSEntityDescription Entity 相当于数据库中的一个表,它描述一种抽象数据类型,其对应的类为 NSEntityDescription 常用方法: +insertNewObjectForEntityForName:inManagedObjectContext:工厂方法,根据给定的 Entity 描述 An NSEntityDescription object may have NSAttributeDescription and NSRelationshipDescription objects that entityName) { return; } NSEntityDescription * entity = [NSEntityDescription entityForName ; } } 7.2.2 新增临时实体对象实例 NSEntityDescription * entity = [NSEntityDescription entityForName: NSStringFromClass
User* user=(User *)[NSEntityDescription insertNewObjectForEntityForName:@"User" inManagedObjectContext NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext NSEntityDescription* user=[NSEntityDescription entityForName:@"User" inManagedObjectContext:_myAppDelegate.managedObjectContext
数据结构 NSPersistentStoreCoordinator 添加数据库,设置数据存储的名字,位置,存储方式 NSManagedObject 被管理的数据记录 NSFetchRequest 数据请求 NSEntityDescription // 1.根据Entity名称和NSManagedObjectContext获取一个新的继承于NSManagedObject的子类Student Student * student = [NSEntityDescription
其它的的 Description 还包括但不限于: •NSEntityDescription实体描述•NSRelationshipDescription实体关系的描述•NSAttributeDescription Attribute 的描述•NSFetchIndexDescription索引 Index 的描述•NSDerivedAttributeDescription派生属性的描述 下面的代码将用给定托管对象的 NSEntityDescription originalObject.entity.name else { throw CloneNSManagedObjectError.entityNameError}let cloneObject = NSEntityDescription.insertNewObject
增删查改: 增:利用NSEntityDescription的类方法insertNewObjectForEntityForName:inManagedObjectContext:,添加数据(对象) 删 Entity /「实体」 NSEntityDescription类实例,用于定义一个对象。一个「实体」,最少要有「名字」和「类名」(如果没有设置类名,默认是NSManagedObject类)。 可参考以下表格,对照进行理解(这个表格或许不慎严谨) 数据库术语 代码中的术语 Core Data中的术语 表格 类 实体 / Entity(NSEntityDescription类实例) 列 属性 实体特性 managed object model),可以撸起袖子干了……(第一张示意图,其实都有对增删查、保存方法有所提及) - (void)addNewUser { SPKUser *newUser = [NSEntityDescription newUser.name = @"Antony"; newUser.userID = 123; } 看以上代码,增加一条数据,并不是调用NSManagedObjectContext类中的某个方法,而是用了NSEntityDescription
数据结构 NSPersistentStoreCoordinator 添加数据库,设置数据存储的名字,位置,存储方式 NSManagedObject 被管理的数据记录 NSFetchRequest 数据请求 NSEntityDescription // 1.根据Entity名称和NSManagedObjectContext获取一个新的继承于NSManagedObject的子类Student Student * student = [NSEntityDescription
NSPersistentStoreCoordinator(持久化存储助理) 相当于数据库的连接器 (4)NSFetchRequest(获取数据的请求) 相当于查询语句 (5)NSPredicate(相当于查询条件) (6)NSEntityDescription
destinationModel=(<NSManagedObjectModel: 0x7f82d4935280>) isEditable 0, entities {** ** Amount = "(<NSEntityDescription subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)";** ** Item = "(<NSEntityDescription , sourceModel=(<NSManagedObjectModel: 0x7f82d488e930>) isEditable 1, entities {** ** Amount = "(<NSEntityDescription subentities {\n}, userInfo {\n}, versionHashModifier (null), uniquenessConstraints (\n)";** ** Item = "(<NSEntityDescription
sInstance.dictionaryWithValues(forKeys: sourceKeys.map { $0 as String }) // 2 let destinationInstance = NSEntityDescription.insertNewObject return matchedArtist } // 6 let artist = NSEntityDescription.insertNewObject
NSPersistentStoreCoordinator 相当于数据库与数据模型之间桥接器,通过它将数据模型存入到数据库 NSManagedObjectContext 核心的数据库管理类 开发者通过操作它来执行对数据库的操作 NSEntityDescription
创建一个新的Core Data对象然后再简单的修改一下它,需要下面这些代码: //Create a new Dog Dog *newDog = [NSEntityDescription insertNewObjectForEntityForName self.managedObjectContext; //A fetch request to get all dogs younger than 5 years old, in alphabetical order NSEntityDescription *entity = [NSEntityDescription entityForName:@"Dog" inManagedObjectContext
= nil; //先查询日期 遍历日期表 NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"TallyDate" inManagedObjectContext:managedObjectContext NSString *key = date.date; NSFetchRequest *fetchRequest2 = [[NSFetchRequest alloc] init]; NSEntityDescription *entity2 = [NSEntityDescription entityForName:@"Tally" inManagedObjectContext:managedObjectContext];
} 如下代码: 仅仅因为大小写问题,将initWithDelegate写成了-(id) initwithDelegate,就会报错 14 CoreData临时实体对象 NSEntityDescription *entity = [NSEntityDescription entityForName:NSStringFromClass([IMUserInfoEntity class]) inManagedObjectContext
managedObectContext = appDelegate.persistentContainer.viewContext // 步骤二:建立一个entity let entity = NSEntityDescription.entity
createManagedObjectContexts]; [managedObjectStore startIndexingPersistentStoreManagedObjectContext]; Article *article1 = [NSEntityDescription article1.title = @"First Article"; article1.body = "This should match search"; Article *article2 = [NSEntityDescription