IOS开发指南读书笔记12(IOS数据持久层的建立4)

原创 2015年11月18日 11:42:07
IOS开发指南读书笔记12(IOS数据持久层的建立4)
 建立CoreData需要首先建立一个模型文件

图片
生成的后缀是xcdatamodeid,但是编译之后在沙盒的momd文件
首先Add Entity
然后Add Attribute(注意,属性名必须是小写)

图片

图片

 
然后生成ManageObject

图片

图片

图片

图片


建立CoreData对象管理

//coreData数据管理

@interface CoreDataNoteDao : NSObject<BaseNoteDao>
//被管理对象的上下文
 
@property(readonly,strong,nonatomicNSManagedObjectContext* managedObjectContext;
 
//被管理对象的模型
 
@property(readonly,strong,nonatomicNSManagedObjectModel* managedObjectModel;
 
//存储协调器
 
@property(readonly,strong,nonatomicNSPersistentStoreCoordinator* persistStoreCoordinator;
 
@end 

具体实现

@implementation CoreDataNoteDao

@synthesize managedObjectContext = _managedObjectContext;

@synthesize managedObjectModel = _managedObjectModel;

@synthesize persistStoreCoordinator = _persistStoreCoordinator;


+(id)sharedManager

{

    static dispatch_once_t onceToken;

    __block PlistNoteDao* instance = nil;

    dispatch_once(&onceToken, ^{

        instance = [[PlistNoteDao alloc]init];

        [instance createObjectCacheFile];

    });

    return instance;

}


-(void)createObjectCacheFile

{

}


-(NSURL *)ObjectCacheFilePath

{

    return [[[[NSFileManager defaultManagerURLsForDirectory:NSDocumentationDirectory inDomains:NSUserDomainMasklastObjectURLByAppendingPathComponent:@"Note.sqlite"];

}


-(NSManagedObjectContext*)managedObjectContext

{

    if (_managedObjectContext) {

        return _managedObjectContext;

    }

    NSPersistentStoreCoordinator* coordinator = self.persistStoreCoordinator;

    if (coordinator) {

        _managedObjectContext = [[NSManagedObjectContext alloc]init];

        [_managedObjectContext setPersistentStoreCoordinator:coordinator];

    }

    return _managedObjectContext;

}


-(NSManagedObjectModel*)managedObjectModel

{

    if (_managedObjectModel) {

        return _managedObjectModel;

    }

    NSURL* modelURL = [[NSBundle mainBundle]URLForResource:@"Note" withExtension:@"momd"];

    _managedObjectModel = [[NSManagedObjectModel alloc]initWithContentsOfURL:modelURL];

    return _managedObjectModel;

}


-(NSPersistentStoreCoordinator*)persistStoreCoordinator

{

    if (_persistStoreCoordinator) {

        return _persistStoreCoordinator;

    }

    NSURL* storeURL = [self ObjectCacheFilePath] ;

    _persistStoreCoordinator = [[NSPersistentStoreCoordinator alloc]initWithManagedObjectModel:self.managedObjectModel];

    [_persistStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nilerror:nil];

    return _persistStoreCoordinator;

}


-(void)addNote:(Note *)note

{

    NoteManagerObject* om = [NSEntityDescription insertNewObjectForEntityForName:@"Note"inManagedObjectContext:self.managedObjectContext];

    [om setValue:note.content forKey:@"content"];

    [om setValue:[NSNumber numberWithInteger:note.IDforKey:@"id"];

    

    om.content = note.content;

    om.id = [NSNumber numberWithInteger:note.ID];

    

    NSError* error = nil;

    if ([self.managedObjectContext save:&error]) {

        NSLog(@"插入成功");

    }

    else

    {

        NSLog(@"插入失败");

    }

}


-(void)removeNote:(Note *)note

{

    NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"Note"inManagedObjectContext:self.managedObjectContext];

    NSFetchRequest * request = [[NSFetchRequest alloc]init];

    [request setEntity:entityDescription];

    

    NSPredicate* perdicate = [NSPredicate predicateWithFormat:@"id = %d",note.ID];

    [request setPredicate:perdicate];


    NSError* error = nil;

    NSArray* datas = [self.managedObjectContext executeFetchRequest:request error:&error];

    

    if (datas.count > 0) {

        NoteManagerObject* mo = [datas lastObject];

        [self.managedObjectContext deleteObject:mo];

        

        

        

        NSError* error = nil;

        if ([self.managedObjectContext save:&error]) {

            NSLog(@"删除成功");

        }

        else

        {

            NSLog(@"删除失败");

        }

    }


    

}


-(void)modify:(Note*)note

{

    NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"Note"inManagedObjectContext:self.managedObjectContext];

    NSFetchRequest * request = [[NSFetchRequest alloc]init];

    [request setEntity:entityDescription];

    

    NSPredicate* perdicate = [NSPredicate predicateWithFormat:@"id = %d",note.ID];

    [request setPredicate:perdicate];

    

    NSError* error = nil;

    NSArray* datas = [self.managedObjectContext executeFetchRequest:request error:&error];

    

    if (datas.count > 0) {

        NoteManagerObject* mo = [datas lastObject];

        mo.content = note.content;

        

        NSError* error = nil;

        if ([self.managedObjectContext save:&error]) {

            NSLog(@"修改成功");

        }

        else

        {

            NSLog(@"修改成功");

        }

    }

}


-(NSMutableArray*)queryAllNote

{

    NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"Note"inManagedObjectContext:self.managedObjectContext];

    NSFetchRequest * request = [[NSFetchRequest alloc]init];

    [request setEntity:entityDescription];

    

    NSSortDescriptor* sortDescriptor = [[NSSortDescriptor alloc]initWithKey:@"id" ascending:YES];

    [request setSortDescriptors@[sortDescriptor]];

    

    NSError* error = nil;

    NSArray* datas = [self.managedObjectContext executeFetchRequest:request error:&error];

    NSMutableArray* modelList = [NSMutableArray array];

    

    for (NoteManagerObject* obj in datas) {

        Note* note = [[Note alloc]init];

        note.ID = [obj.id integerValue];

        note.content = obj.content;

        [modelList addObject:note];

    }

    return modelList;

}


-(Note*)queryNoteByID:(NSInteger)ID

{

    NSEntityDescription* entityDescription = [NSEntityDescription entityForName:@"Note"inManagedObjectContext:self.managedObjectContext];

    NSFetchRequest * request = [[NSFetchRequest alloc]init];

    [request setEntity:entityDescription];

    

    NSPredicate* perdicate = [NSPredicate predicateWithFormat:@"id = %d",ID];

    [request setPredicate:perdicate];

    

    NSError* error = nil;

    NSArray* datas = [self.managedObjectContext executeFetchRequest:request error:&error];

    

    if (datas.count > 0) {

        NoteManagerObject* mo = [datas lastObject];

        Note* note = [[Note alloc]init];

        note.ID = [mo.id integerValue];

        note.content = mo.content;

        return note;

    }

    return nil;

}


@end 


IOS开发指南读书笔记10(IOS数据持久层的建立2)

IOS开发指南读书笔记10(IOS数据持久层的建立2) 基于对象归档的实现 建立对象归档数据管理类 实现归档数据持久的对象实现NSCoding协议 其属性也必须是基本类型或者实现N...
  • hahahakonghee
  • hahahakonghee
  • 2015年11月18日 11:40
  • 291

IOS开发指南读书笔记11(IOS数据持久层的建立3)

IOS开发指南读书笔记11(IOS数据持久层的建立3) 基于SQLite的数据持久的实现 建立SQLite数据管理 //sqlite数据管理 @interface SQLi...
  • hahahakonghee
  • hahahakonghee
  • 2015年11月18日 11:41
  • 261

OS开发指南读书笔记9(IOS数据持久层的建立1)

IOS开发指南读书笔记9(IOS数据持久层的建立1)  建立IOS数据持久层,有以下几个方式 1、文本文件 plist/Xml/Json/NSUserDefault(等同于plist) 2、...
  • hahahakonghee
  • hahahakonghee
  • 2015年11月18日 11:39
  • 393

两种语言,一个平台——《iOS开发指南:从Hello World到App Store上架(第4版)》

一个人做厨师几年也做不出好吃的菜,再怎么培训也做不好iOS;一个人只要勤学苦练,学好iOS只要看一本《iOS开发指南:从Hello World到App Store上架(第4版)》就够了。...
  • dongfeng9ge
  • dongfeng9ge
  • 2016年09月05日 08:20
  • 2926

IOS开发指南读书笔记4(IOS API分类)

IOS开发指南读书笔记4(IOS API分类)  1、IOS 体系架构 2、Cocoa Touch层 3、Media层 4、Core Services层   ...
  • hahahakonghee
  • hahahakonghee
  • 2015年11月18日 11:35
  • 283

iOS 分层架构设计

> 衡量一个软件架构设计好坏的原则是:可复用性和可扩展性 > 有关信息处理的应用应该采用分层架构设计,而游戏等应用不会采用这种分层架构设计(一般都会采用某个引擎) iOS分层架构设...
  • sinat_26547981
  • sinat_26547981
  • 2016年03月04日 11:18
  • 525

《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见

我的最新作品:《iOS开发指南-从0基础到AppStore上线》一书电子版图灵社区上线了iOS架构设计、iOS性能优化、iOS测试驱动、iOS调试、iOS团队协作版本控制。。。。。。...
  • tonny_guan
  • tonny_guan
  • 2013年06月09日 15:42
  • 4686

1-读书笔记----iOS开发指南:从零基础到App Store上架--iOS入门

iOS的系统架构分为4层——Cocoa Touch层、Media层、Core Services层和Core OS层 AppDelegate类是应用程序委托对象,这个类中继承的一系列方法在应用生...
  • blacet
  • blacet
  • 2015年11月08日 21:46
  • 985

Delphi for iOS开发指南(2):在Windows PC上配置你的开发环境

在这篇教程开始之前,你应该阅读并按教程里的步骤执行: “Delphi for iOS开发指南(1):在Mac上配置你的开发环境”   为iOS目标平台开发的FireMonkey应用程序最初可以在...
  • wei_wu49036233
  • wei_wu49036233
  • 2013年09月03日 09:09
  • 3039

IOS开发指南读书笔记5(IOS 常用设计模式)

IOS开发指南读书笔记5(IOS 常用设计模式) 1、单例模式 构造方法 @interface Singleton : NSObject +(Singleton*)shar...
  • hahahakonghee
  • hahahakonghee
  • 2015年11月18日 11:36
  • 396
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS开发指南读书笔记12(IOS数据持久层的建立4)
举报原因:
原因补充:

(最多只允许输入30个字)