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

 

转载于:https://www.cnblogs.com/ningmengcao-ios/p/5769700.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值