关闭

coreDate的使用方法

标签: coreDate
97人阅读 评论(0) 收藏 举报
分类:
#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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15153次
    • 积分:597
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:6篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论