iFlyingCoder的博客

让代码飞起来

coreDate的使用方法
#import "CoreDataManager.h"

@implementation CoreDataManager
//单例
+(
instancetype)shareManager
{
   
static CoreDataManager * m = nil;
   
static dispatch_once_t onceToken;
   
dispatch_once(&onceToken, ^{
        m = [[
CoreDataManager alloc]init];
    });
   
return m;
}
//初始化
- (
instancetype)init
{
   
self = [super init];
   
if (self) {
       
//1.创建数据模型
       
//2.通过数据模型 获取文件路径
       
NSURL * modelUrl = [[NSBundle mainBundle]URLForResource:@"Model" withExtension:@"momd"];
       
       
//3.通过文件路径 创建数据模型对象
       
NSManagedObjectModel * model = [[NSManagedObjectModel alloc]initWithContentsOfURL:modelUrl];
       
       
//4.通过数据模型对象 创建持续储存协调器
       
NSPersistentStoreCoordinator * coordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:model];
       
       
//5.通过持续储存协调器 在硬盘上创建或打开一个库文件
       
//1)获取documents 路径
       
NSURL * url = [[[NSFileManager defaultManager]URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
        url = [url
URLByAppendingPathComponent:@"model3.sqlite"];
       
       
//(2)在硬盘上 打开或创建一个库文件
       
NSError * error;
       
if(![coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:&error])
        {
           
NSLog(@"%@",error.localizedDescription);
        }
       
//6.创建上下文 并绑定持续储存协调器
       
NSManagedObjectContext * contt = [[NSManagedObjectContext alloc]init];
        [contt
setPersistentStoreCoordinator:coordinator];
       
       
self.context = contt;
       
    }
   
return self;
}



//存入
-(
BOOL)insertName:(NSString *)aName andAge:(NSNumber *)anAge{
   
//查重
   
Person *p;
    p=[
self fetchPersonWithName:aName];
   
   
if ([p.name isEqualToString:aName ]||[aName isEqualToString: @""]) {
       
return NO;
    }
   
//储存
   
//创建实体
   
Person * pp = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([Person class]) inManagedObjectContext:self.context];
   
   
//具体赋值
    pp.
name = aName;
    pp.
age = anAge;
   
   
NSError * error = nil;
   
//保存
   
if(![self.context save:&error]){
       
return NO;
    }
else{
       
return YES;
    }
   
}


//查重
-(
Person *)fetchPersonWithName:(NSString *)aName{
   
//创建查询请求
   
NSFetchRequest *request=[NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Person class])];
   
//设置谓词(就是依照谓词进行筛选)
   
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"name=%@",aName];
   
//添加谓词
    [request
setPredicate: predicate];
   
   
//用数组接收查询结果
   
NSArray *persons=[self.context executeFetchRequest:request error:nil];
   
   
if (persons.count>0) {
       
Person *pp=persons[0];//返回需要的结果
       
return pp;
    }
   
return nil;
}



//删除
-(
BOOL)deletePersonWithName:(NSString *)aName{
   
//查找
   
NSFetchRequest *request=[NSFetchRequest fetchRequestWithEntityName:NSStringFromClass([Person class])];
   
NSPredicate *predicate=[NSPredicate predicateWithFormat:@"name=%@",aName];
   
    [request
setPredicate: predicate];
   
   
NSArray *persons=[self.context executeFetchRequest:request error:nil];
   
if (persons.count>0) {
       
Person *p11=persons[0];
       
//删除要删除的对象
        [
self.context deleteObject:p11];
       
//改动后的保存(不保存删除就会失败)
       
NSError *error;
       
if([self.context save:&error]){
           
return YES;
        }  
       
    }
   
   
return NO;
}
@end
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingshuiputeng/article/details/52350062
文章标签: coreDate
个人分类: iOS
想对作者说点什么? 我来说一句

coreDate Demo

2013年01月10日 422KB 下载

CoreDataUpdateDemo

2013年12月04日 102KB 下载

没有更多推荐了,返回首页

不良信息举报

coreDate的使用方法

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭