美文网首页iOS
iOS-CoreData数据持久化

iOS-CoreData数据持久化

作者: 和谐共处 | 来源:发表于2016-11-09 15:55 被阅读5次

    1.NSManagedObjectContext的创建

      - (NSManagedObjectContext *)creatManagedObjectContext
    {
        //1、创建模型对象
        //获取模型路径
        //modelName 模型名字(带xcdatamodeld后缀的名字)
        NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"modelName" withExtension:@"momd"];
        //根据模型文件创建模型对象
        NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
        //2、创建持久化助理    //利用模型对象创建助理对象
        NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
        //数据库的名称和路径
        NSString *docStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        NSString *sqlPath = [docStr stringByAppendingPathComponent:@"mySqlite.sqlite"];    NSLog(@"path = %@", sqlPath);
        NSURL *sqlUrl = [NSURL fileURLWithPath:sqlPath];
        //设置数据库相关信息
        [store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqlUrl options:nil error:nil];
        //3、创建上下文
        NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
        //关联持久化助理
        context.persistentStoreCoordinator = store;
        
        return context;
        
    }
    

    2.对Entity(实体)的操作

    查询
      #pragma mark - 查询
    - (void)queryData:(id)data
    {
    
        NSError *error = nil;
        NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Book"];
        
        NSMutableArray *resultArray = [[_myAppdelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
        if (resultArray == nil) {
            NSLog(@"error = %@",error);
        }else{
            NSLog(@"query successful!");
        }
        
        for (Book *book in resultArray) {
            NSLog(@"name==%@------price==%@\n",book.name,book.price);
        }
    }
    
    插入
       #pragma mark - 插入
    - (void)insertData:(id)data
    {
        Book *book = [NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:_myAppdelegate.managedObjectContext];
        book.name = @"软件开发";
        book.price = [NSNumber numberWithFloat:10.5];
        
        NSError *error = nil;
        
        BOOL isSaveSuccess = [_myAppdelegate.managedObjectContext save:&error];
        if (!isSaveSuccess) {
            NSLog(@"Error:%@",error);
        }else{
            NSLog(@"Save successful!");
        }
        
    }
    
    删除
       #pragma mark - 删除
    - (void)deleteData:(id)date
    {
        NSFetchRequest *request = [[NSFetchRequest alloc]init];
        
        NSEntityDescription *book = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:_myAppdelegate.managedObjectContext];
        request.entity = book;
        
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@"我的青春"];
        request.predicate = predicate;
        
        NSError *error = nil;
        
        NSMutableArray *fetchResult = [[_myAppdelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
        if (fetchResult == nil) {
            NSLog(@"delete error = %@",error);
        }else{
            NSLog(@"delete successful!");
        }
        for (Book *book in fetchResult) {
            [_myAppdelegate.managedObjectContext deleteObject:book];
        }
        if (![_myAppdelegate.managedObjectContext save:&error]) {
            NSLog(@"Error == %@,%@",error,error.userInfo);
        }else{
            NSLog(@"delete save successful !");
        }
    }
    
    更新
        #pragma mark - 更新
    - (void)updateData:(id)data
    {
        NSFetchRequest *request = [[NSFetchRequest alloc]init];
        
        NSEntityDescription *book = [NSEntityDescription entityForName:@"Book" inManagedObjectContext:_myAppdelegate.managedObjectContext];
        request.entity = book;
        //条件
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"name==%@",@"软件开发"];
        request.predicate = predicate;
        
        NSError *error = nil;
        
        NSMutableArray *fetchResult = [[_myAppdelegate.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
        if (fetchResult == nil) {
            NSLog(@"Error= %@",error);
        }else{
            NSLog(@"update successful!");
        }
        
        for (Book *book in fetchResult) {
            book.name = @"我的青春";
        }
        [_myAppdelegate.managedObjectContext save:&error];
        
    }

    相关文章

      网友评论

        本文标题:iOS-CoreData数据持久化

        本文链接:https://www.haomeiwen.com/subject/gfftpttx.html