IOS coredata数据库操作
2014-08-19 10:35
363 查看
1.导入CoreData.framework创建Data Model
2.添加Entities和Attributes
3.创建对应的类
4.创建管理类
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
@interface SqliteViewController :
UIViewController
//数据模型对象
@property(strong,nonatomic)
NSManagedObjectModel *managedObjectModel;
//上下文对象
@property(strong,nonatomic)
NSManagedObjectContext *managedObjectContext;
//持久性存储区
@property(strong,nonatomic)
NSPersistentStoreCoordinator *persistentStoreCoordinator;
//初始化Core Data使用的数据库
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator;
//managedObjectModel的初始化赋值函数
-(NSManagedObjectModel *)managedObjectModel;
//managedObjectContext的初始化赋值函数
-(NSManagedObjectContext *)managedObjectContext;
//具体操作
//添加数据
-(void)addCoreData;
//查询
-(NSArray*)searchCoreData;
//删除
-(void)delegateCoreData;
--------------------------------------------------------------------------------------------------------------------------------------
#import "SqliteViewController.h"
#import "Message.h"
@interface SqliteViewController ()
@end
@implementation SqliteViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super
initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super
viewDidLoad];
// Do any additional setup after loading the view.
[self
managedObjectContext];
}
-(NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel !=
nil) {
return
_managedObjectModel;
}
_managedObjectModel = [NSManagedObjectModel
mergedModelFromBundles:nil] ;
return
_managedObjectModel;
}
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator !=
nil) {
return
_persistentStoreCoordinator;
}
//得到数据库的路径
NSString *docs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject];
//CoreData是建立在SQLite之上的,数据库名称需与Xcdatamodel文件同名
NSURL *storeUrl = [NSURL
fileURLWithPath:[docs stringByAppendingPathComponent:@"ZhiHui.sqlite"]];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc]initWithManagedObjectModel:[self
managedObjectModel]];
if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl options:nil
error:&error]) {
NSLog(@"Error: %@,%@",error,[error
userInfo]);
}
return
_persistentStoreCoordinator;
}
-(NSManagedObjectContext * )managedObjectContext
{ NSLog(@"-------");
NSLog(@"self.context = %@",_managedObjectContext);
if (_managedObjectContext !=
nil) {
return
_managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator =[self
persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext
alloc]init];
[_managedObjectContext
setPersistentStoreCoordinator:coordinator];
}
return
_managedObjectContext;
}
#pragma mark---------------数据库具体操作
//添加数据
-(void)addCoreData{
Message * mess = [NSEntityDescription
insertNewObjectForEntityForName:@"Message"
inManagedObjectContext:self.managedObjectContext];
mess.idn = @10;
mess.name = @"name1";
mess.address = @"address1";
NSLog(@"存储数据:%d",[self.managedObjectContext
save:nil]);
}
//查询
-(NSArray*)searchCoreData{
NSFetchRequest * request = [[NSFetchRequest
alloc]init];
request.entity = [NSEntityDescription
entityForName:@"Message"
inManagedObjectContext:self.managedObjectContext];
return [self.managedObjectContext
executeFetchRequest:request error:nil];
}
//删除
-(void)delegateCoreData{
Message * mess = [[self
searchCoreData]lastObject];
[self.managedObjectContext
deleteObject:mess];
[self.managedObjectContext
save:nil];
}
2.添加Entities和Attributes
3.创建对应的类
4.创建管理类
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
@interface SqliteViewController :
UIViewController
//数据模型对象
@property(strong,nonatomic)
NSManagedObjectModel *managedObjectModel;
//上下文对象
@property(strong,nonatomic)
NSManagedObjectContext *managedObjectContext;
//持久性存储区
@property(strong,nonatomic)
NSPersistentStoreCoordinator *persistentStoreCoordinator;
//初始化Core Data使用的数据库
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator;
//managedObjectModel的初始化赋值函数
-(NSManagedObjectModel *)managedObjectModel;
//managedObjectContext的初始化赋值函数
-(NSManagedObjectContext *)managedObjectContext;
//具体操作
//添加数据
-(void)addCoreData;
//查询
-(NSArray*)searchCoreData;
//删除
-(void)delegateCoreData;
--------------------------------------------------------------------------------------------------------------------------------------
#import "SqliteViewController.h"
#import "Message.h"
@interface SqliteViewController ()
@end
@implementation SqliteViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super
initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super
viewDidLoad];
// Do any additional setup after loading the view.
[self
managedObjectContext];
}
-(NSManagedObjectModel *)managedObjectModel
{
if (_managedObjectModel !=
nil) {
return
_managedObjectModel;
}
_managedObjectModel = [NSManagedObjectModel
mergedModelFromBundles:nil] ;
return
_managedObjectModel;
}
-(NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
if (_persistentStoreCoordinator !=
nil) {
return
_persistentStoreCoordinator;
}
//得到数据库的路径
NSString *docs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
lastObject];
//CoreData是建立在SQLite之上的,数据库名称需与Xcdatamodel文件同名
NSURL *storeUrl = [NSURL
fileURLWithPath:[docs stringByAppendingPathComponent:@"ZhiHui.sqlite"]];
NSError *error = nil;
_persistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc]initWithManagedObjectModel:[self
managedObjectModel]];
if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl options:nil
error:&error]) {
NSLog(@"Error: %@,%@",error,[error
userInfo]);
}
return
_persistentStoreCoordinator;
}
-(NSManagedObjectContext * )managedObjectContext
{ NSLog(@"-------");
NSLog(@"self.context = %@",_managedObjectContext);
if (_managedObjectContext !=
nil) {
return
_managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator =[self
persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [[NSManagedObjectContext
alloc]init];
[_managedObjectContext
setPersistentStoreCoordinator:coordinator];
}
return
_managedObjectContext;
}
#pragma mark---------------数据库具体操作
//添加数据
-(void)addCoreData{
Message * mess = [NSEntityDescription
insertNewObjectForEntityForName:@"Message"
inManagedObjectContext:self.managedObjectContext];
mess.idn = @10;
mess.name = @"name1";
mess.address = @"address1";
NSLog(@"存储数据:%d",[self.managedObjectContext
save:nil]);
}
//查询
-(NSArray*)searchCoreData{
NSFetchRequest * request = [[NSFetchRequest
alloc]init];
request.entity = [NSEntityDescription
entityForName:@"Message"
inManagedObjectContext:self.managedObjectContext];
return [self.managedObjectContext
executeFetchRequest:request error:nil];
}
//删除
-(void)delegateCoreData{
Message * mess = [[self
searchCoreData]lastObject];
[self.managedObjectContext
deleteObject:mess];
[self.managedObjectContext
save:nil];
}
相关文章推荐
- 多线程操作数据库 (CoreData)
- iOS CoreData 的级联删除等操作
- iOS 之core Data操作(三)
- iOS:CoreData数据库的使用三(数据库和tableView表格一起使用)
- iOS coredata 数据库升级 时报Can't find model for source store
- iOS App升级安装 - CoreData数据库升级
- iOS App升级安装 - CoreData数据库升级
- iOS 数据持久化之CoreData(二)堆栈建立和基本操作Demo
- iOS App升级安装 - CoreData数据库升级
- iOS:CoreData数据库的使用二(创建多个数据库表,表之间有对应关系)
- iOS App升级安装 - CoreData数据库升级
- iOS学习Core Data文件操作中调用NSManagedObjectContext类实例save:方法导致程序崩溃
- iOS App升级安装 - CoreData数据库升级
- [Swift 开发] swift支持多线程操作数据库类库-CoreDataManager
- 多线程操作数据库 (CoreData)
- 多线程操作数据库 (CoreData)
- CoreData和ios开发中的数据库,直接查询模拟器内的sqlite数据
- IOS数据管理工具CoreData入门之双向关系操作
- iOS: 转载CoreData数据库框架
- iOS App升级安装 - CoreData数据库升级