• CoreDate的使用


    勾选 xcode的 CoreDate会帮我们自动创建 CoreData 但是我们通常不那样使用,通常把 CoreDate 在单利类中创建,

    //
    //  ZYDAO.h
    //  StoryboardTest
    //
    //  Created by wanglixing on 15/11/27.
    //  Copyright © 2015年 zzz. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "People.h"
    
    @interface ZYDAO : NSObject
    
    + (instancetype)sharedDAO;
    
    - (People* )insertPeopleWithName:(NSString* )name phone:(NSString* )phone;
    
    - (NSArray* )selectAllPeople;
    
    - (void)updatePeople;
    
    - (void)deletePeople:(People* )people;
    
    @end
    //
    //  ZYDAO.m
    //  StoryboardTest
    //
    //  Created by wanglixing on 15/11/27.
    //  Copyright © 2015年 zzz. All rights reserved.
    //
    
    #import "ZYDAO.h"
    @import CoreData;
    
    NSString* const PEOPLE = @"People";
    
    @interface ZYDAO () {
        NSManagedObjectModel* _model;
        NSPersistentStoreCoordinator* _coordinator;
        NSManagedObjectContext* _context;
    }
    
    @end
    
    @implementation ZYDAO
    
    + (instancetype)sharedDAO {
        static ZYDAO* dao = nil;
        
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            dao = [[ZYDAO alloc] init];
        });
        
        return dao;
    }
    
    - (id)init {
        if (self = [super init]) {
            NSURL* modelURL = [[NSBundle mainBundle] URLForResource:@"Model" withExtension:@"momd"];
            
            _model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
            
            _coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:_model];
            
            NSURL* sqliteURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"Model.sqlite"];
            
            if (![_coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqliteURL options:nil error:nil]) {
                NSLog(@"打开数据库失败");
            }
            
            _context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
            
            [_context setPersistentStoreCoordinator:_coordinator];
        }
        
        return self;
    }
    
    - (People* )insertPeopleWithName:(NSString* )name phone:(NSString* )phone {
        People* people = [NSEntityDescription insertNewObjectForEntityForName:PEOPLE inManagedObjectContext:_context];
    
        people.name = name;
        people.phone = phone;
        
        //把修改同步到数据库。
        [_context save:nil];
        
        return people;
    }
    
    - (NSArray* )selectAllPeople {
        NSFetchRequest* request = [NSFetchRequest fetchRequestWithEntityName:PEOPLE];
        
        return [_context executeFetchRequest:request error:nil];
    }
    
    - (void)updatePeople {
        [_context save:nil];
    }
    
    - (void)deletePeople:(People* )people {
        [_context deleteObject:people];
        
        [_context save:nil];
    }
    
    @end
  • 相关阅读:
    Mysql 时间字段(加上或者减去一段时间)
    awk数组与语法
    awk模块、变量、执行
    awk简介与表达式实例
    图数据库
    推荐几款优秀的开源博客系统
    红黑树
    用户画像基础概念
    Panda Global获悉,美国承诺4年内明确区块链数字资产监管方式!
    重庆聚焦区块链应用,Panda Global觉得春天真的来了!
  • 原文地址:https://www.cnblogs.com/ningmengcao-ios/p/5769700.html
Copyright © 2020-2023  润新知