1.使用coredata我们要了解它的操作模式,coredata所进行的操作是以对象为基准,所以如果你想用coredata就必须创建与之对应的模型类
2.接下来便是创建coredata,第一种创建项目的时候我们就可以直接创建
圆圈的位置勾选上即可,第二种创建
3.创建coredata成功后我们要在一个类进行数据的简单的增删改差,我把这个类简单的叫做dataBase上面的便是caredata文件,
在后,我们要在这个类引入两个头文件,第一个头文件,就不会解释了,第二个头文件,应caredata是基于sqlite所依才引用#import <sqlite3.h>
#import <sqlite3.h>
4.接下来就是写代码dataBase.h中写如下代码
@property (readonly,strong,nonatomic)NSManagedObjectContext *managedObjectContext;
@property (readonly,strong,nonatomic)NSManagedObjectModel *managedObjectModel;
@property (readonly,strong,nonatomic)NSPersistentStoreCoordinator *persistentStoreCoordinator;
接下来就是写代码dataBase.m写如下代码,这些代码主要与sqlite建立关系,创建映射路径等问题
#import <CoreData/CoreData.h>
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
#pragma mark 通过coredata进行存储和查询
- (void)saveContext{
NSError *error = nil;
NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
if (managedObjectContext != nil) {
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
//NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
#pragma mark - Core Data stack
// Returns the managed object context for the application.
// If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application.
- (NSManagedObjectContext *)managedObjectContext{
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return _managedObjectContext;
}
// Returns the managed object model for the application.
// If the model doesn't already exist, it is created from the application's model.
- (NSManagedObjectModel *)managedObjectModel{
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"YGche" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
// Returns the persistent store coordinator for the application.
// If the coordinator doesn't already exist, it is created and the application's store added to it.
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator{
if (_persistentStoreCoordinator != nil) {
return _persistentStoreCoordinator;
}
NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES],NSInferMappingModelAutomaticallyOption, nil];
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"YGche.sqlite"];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:optionsDictionary error:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
return _persistentStoreCoordinator;
}
#pragma mark - Application's Documents directory
// Returns the URL to the application's Documents directory.
- (NSURL *)applicationDocumentsDirectory{
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
//////////////////////////////////////////////////////////////////
下面便是添加
红色圆圈位置便是添加所对应的模型类的名字,首字母必须大写

接下来便是添加coredata所需要的模型类



这样模型类就和coredata建立了联系,在填写的时候切记首字母大写
建立联系以后就是简单的增删改查
#pragma mark 判断原来的数据是否存在,存在返回YES,反之
- (BOOL)collectionData:(NSString *)cId{
NSManagedObjectContext *context = [self managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"testid = %@",cId];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"CollectionModel"inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[fetchRequest setFetchLimit:100];
[fetchRequest setFetchOffset:0];
[fetchRequest setPredicate:predicate];
NSError *error;
NSArray *Objects = [context executeFetchRequest:fetchRequest error:&error];
if (Objects.count>0) {
return YES;
}
return NO;
}
#pragma mark 插入收藏数据,如果不存在就可以插入数据当然也可以不用判断是否重复插入
- (void)collectionInsertData:(NSString *)cId kenm :(NSString *)kenm{
NSManagedObjectContext * context = [self managedObjectContext];
CollectionModel *model = (CollectionModel *)[NSEntityDescription insertNewObjectForEntityForName:@"CollectionModel"inManagedObjectContext:context];
model.testid = cId;
model.kenm = kenm;
NSError *error;
if(![contextsave:&error]) {
NSLog(@"%@不能保存:%@",model.testid,[errorlocalized Description]);
}else{
NSLog(@"保存:%@",model.testid);
}
}
#pragma mark查询所有收藏数据,通过CollectionModel.testid属性进行查询查询完成后,CollectionModel.testid存储的内容。当然也可以直接存储CollectionModel
- (NSMutableArray*)queryCollectionData:(NSString *)testid{
NSManagedObjectContext *context = [self managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"testid = %@",testid];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"CollectionModel"inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[fetchRequest setFetchLimit:100];
[fetchRequest setFetchOffset:0];
[fetchRequest setPredicate:predicate];
NSError *error;
NSArray *Objects = [context executeFetchRequest:fetchRequest error:&error];
NSMutableArray *resultArray = [NSMutableArray array];
for (CollectionModel *modelObj in Objects) {
[resultArray addObject:modelObj.testid];
}
return resultArray;
}
#pragma mark 删除指定的收藏id对应的数据,传过来colllectionId就会删除colllectionId所对应的所有信息
- (BOOL)deleteCollectionData:(NSString *)colllectionId{
BOOL isDelet;
NSManagedObjectContext *context = [self managedObjectContext];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"testid = %@",colllectionId];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"CollectionModel"inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc]init];
[request setIncludesPropertyValues:NO];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error =nil;
NSArray *datas = [context executeFetchRequest:request error:&error];
if (!error && datas && [datas count]) {
for (NSManagedObject *obj in datas) {
[context deleteObject:obj];
isDelet = YES;
}
if (![context save:&error]) {
isDelet=NO;
}
}
return isDelet;
}
以上这些就是本人的写的一些基本操作