美文网首页
CoreDate的使用

CoreDate的使用

作者: 宁梓茞 | 来源:发表于2018-01-26 13:22 被阅读0次

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

//
//  ZYDAO.h
//  StoryboardTest
//
//  Created by ninglihuan 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 ninglihuan 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

相关文章

  • CoreDate的使用

    勾选 xcode的 CoreDate会帮我们自动创建 CoreData 但是我们通常不那样使用,通常把 CoreD...

  • 关于MagicalRecord的一些小技巧

    这篇文章假定你已经大概熟悉CoreDate和MagicalRecord框架的使用方法了. 1.如何在获取CoreD...

  • iOS CoreDate 入门

    折腾了一下午,跑通了 CoreData增加数据和查询 学习一门语言没那么简单~~~~好在iOS比较稳定 注意如果在...

  • iOS coredate 数据库 第三方MagicalReco

    Core Data初始 Core Data 是 iOS系统提供的数据存储方式,和传统的SQL相比: 它无需写SQL...

  • iconfont的使用(下载使用)

    1、下载文件 2、在生命周期中引入项目 beforeCreate () { var domModule = ...

  • Gson的使用--使用注解

    Gson为了简化序列化和反序列化的过程,提供了很多注解,这些注解大致分为三类,我们一一的介绍一下。 自定义字段的名...

  • 记录使用iframe的使用

    默认记录一下----可以说 这是我第一次使用iframe 之前都没有使用过; 使用方式: 自己开发就用了这几个属...

  • with的使用

    下面例子可以具体说明with如何工作: 运行代码,输出如下

  • this的使用

    什么是this? this是一个关键字,这个关键字总是返回一个对象;简单说,就是返回属性或方法“当前”所在的对象。...

  • this的使用

    JS中this调用有几种情况 一:纯粹的函数调用 这是函数的最通常用法,属于全局性调用,因此this就代表全局对象...

网友评论

      本文标题:CoreDate的使用

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