IOS开发指南读书笔记12(IOS数据持久层的建立4)
建立
CoreData需要首先建立一个模型文件
生成的后缀是xcdatamodeid,但是编译之后在沙盒的momd文件 首先Add Entity 然后Add Attribute(注意,属性名必须是小写) 然后生成ManageObject 建立CoreData对象管理 //coreData数据管理 @interface CoreDataNoteDao : NSObject<BaseNoteDao> @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 defaultManager] URLsForDirectory:NSDocumentationDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:@"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.ID] forKey:@"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开发指南读书笔记12(IOS数据持久层的建立4)
最新推荐文章于 2019-01-16 11:15:39 发布