CoreData核心對(duì)象
- 實(shí)體管理類(lèi):NSManagedObject
- 實(shí)體描述類(lèi):NSEntityDescription
- 數(shù)據(jù)管理器類(lèi):NSManagedObjectContext
- 數(shù)據(jù)連接器類(lèi):NSPersistentStoreCoordinator
- 數(shù)據(jù)模型器類(lèi):NSManagedObjectModel
CoreData核心類(lèi)的關(guān)系
CoreData核心類(lèi)的關(guān)系
CoreData數(shù)據(jù)框架的核心對(duì)象
持久化儲(chǔ)存和存儲(chǔ)文件
- NSPersistentStore:持久化數(shù)據(jù)儲(chǔ)存惹恃,是對(duì)實(shí)際文件的一種Objective-C的一種表示方式张症,一個(gè)被封裝好的底層類(lèi),用于存儲(chǔ)數(shù)據(jù)。
被管理上下文
- NSManagedObjectContext被管理對(duì)象上下文拣宏,在CoreData中用于操作和使用數(shù)據(jù)姿鸿,負(fù)責(zé)應(yīng)用和數(shù)據(jù)庫(kù)之間的交互。
- 數(shù)據(jù)庫(kù)的保存需要NSManagedObjectContext進(jìn)行save操作煎谍。
- 數(shù)據(jù)的查詢(xún)需要NSManagedObjectContext進(jìn)行executeFetchRequest操作,返回值是數(shù)組龙屉。
- CoreData提供的是對(duì)象關(guān)系映射呐粘,NSManagedObjectContext操作的都是NSManagedObject對(duì)象。
被管理對(duì)象相關(guān)類(lèi)
- NSManagedObjectMode:被管理對(duì)象模型叔扼,管理多個(gè)對(duì)象事哭。
- NSManagedObject:被管理對(duì)象,CoreData返回的數(shù)據(jù)模型瓜富,被管理的對(duì)象是根據(jù)實(shí)體描述生成的鳍咱。
- NSEntityDescription:實(shí)體描述類(lèi)根據(jù)實(shí)體創(chuàng)建被管理對(duì)象。
- Entity:實(shí)體類(lèi)与柑,實(shí)體是對(duì)文件數(shù)據(jù)的描述谤辜,被管理對(duì)象標(biāo)表示實(shí)體,實(shí)體包含名稱(chēng)价捧,屬性(字段)和關(guān)系丑念,實(shí)體的名稱(chēng)通常被管理對(duì)象名稱(chēng)一致。
數(shù)據(jù)查詢(xún)
- NSFetchRequest:查詢(xún)請(qǐng)求结蟋,可以做排序操作脯倚,也可以使用謂詞。
- NSManagedObjectContext:根據(jù)NSFetchRequest查詢(xún)數(shù)據(jù)嵌屎,以數(shù)組形式返回推正,數(shù)組中包含被管理對(duì)象(NSManagedObject)。
- NSSortDescriptor:排序操作宝惰。
數(shù)據(jù)持久化的過(guò)程
- 持久化數(shù)據(jù)的過(guò)程:context上下文將對(duì)被管理對(duì)象的子類(lèi)進(jìn)行的所有操作(包括增加植榕,刪除,更新等)進(jìn)行持久化的時(shí)候(調(diào)用save方法的時(shí)候)尼夺,將所有的操作交給持久化數(shù)據(jù)協(xié)調(diào)器(persistentStoreCoordinator)尊残,persistentStoreCoordinator(持久化數(shù)據(jù)協(xié)調(diào)器)會(huì)把對(duì)象類(lèi)型的數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制類(lèi)型的數(shù)據(jù)炒瘸,然后存儲(chǔ)到文件系統(tǒng)中。
- 讀取過(guò)程:持久化數(shù)據(jù)協(xié)調(diào)器(persistentStoreCoordinator)從文件系統(tǒng)中讀取出二進(jìn)制的數(shù)據(jù)寝衫,根據(jù)實(shí)體對(duì)象轉(zhuǎn)換成對(duì)應(yīng)的對(duì)象類(lèi)型顷扩。將轉(zhuǎn)換好的數(shù)據(jù)交給上下文來(lái)操作。
示例代碼
往數(shù)據(jù)庫(kù)中添加元素
- (void)addObject{
NSEntityDescription *description = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:self.delegate.managedObjectContext];
Student *stu = [[Student alloc]initWithEntity:description insertIntoManagedObjectContext:self.delegate.managedObjectContext];
stu.name = @"小明";
stu.gender = @"男";
[self.delegate saveContext];
NSLog(@"%@",NSHomeDirectory());
}
修改元素
- (void)changeFromCoreData{
NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"小明"];
request.predicate = predicate;
NSArray *array = [self.delegate.managedObjectContext executeFetchRequest:request error:nil];
for (Student *stu in array) {
stu.name = @"小李";
}
[self.delegate saveContext];
}
刪除元素
- (void)delegateFromCoreData{
NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name = %@",@"小明"];
request.predicate = predicate;
NSArray *array = [self.delegate.managedObjectContext executeFetchRequest:request error:nil];
for (Student *stu in array) {
[self.delegate.managedObjectContext deleteObject:stu];
}
[self.delegate saveContext];
}
查詢(xún)?cè)?/h2>
- (void)selectFromCoreData{
NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Student"];
NSArray *array = [self.delegate.managedObjectContext executeFetchRequest:request error:nil];
NSLog(@"%@",array);
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者