您的位置:首页 > 编程语言

codeData数据持久化代码

2014-04-04 11:38 211 查看
#import <UIKit/UIKit.h>

@interface AppDelegate :
UIResponder <UIApplicationDelegate>

@property (strong,
nonatomic) UIWindow *window;

//数据模型对象
@property (strong,
nonatomic) NSManagedObjectModel *managedObjectModel;

//上下文对象
@property (strong,
nonatomic) NSManagedObjectContext *managedObjectContext;

//持久化存储区
@property (strong,
nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;

@end
---------------------------------------------------------

-(NSManagedObjectContext *)managedObjectContext
{
    //如果上下文对象已经创建,就直接返回创建的对象
    if (_managedObjectContext !=
nil) {
        return
_managedObjectContext;
    }
    
    //
先取得创建好的调度对象
    NSPersistentStoreCoordinator *coordinator = [self
persistentStoreCoordinator];
    
    //如果成功创建调度对象,就在此基础上创建上下文对象
    if (coordinator !=
nil) {
        _managedObjectContext = [[NSManagedObjectContext
alloc] init];
        [_managedObjectContext
setPersistentStoreCoordinator:coordinator];
    }
    
    return
_managedObjectContext;
}

-(NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    //如果已经创建好调度对象,则直接返回对象
    if (_persistentStoreCoordinator !=
nil) {
        return
_persistentStoreCoordinator;
    }
    
    //得到数据库的路径
    NSString *docs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES)
objectAtIndex:0];
    
    //指定数据库文件名称
    NSURL *storeUrl = [NSURL
fileURLWithPath:[docs stringByAppendingPathComponent:@"linkman.sqlite"]];
    NSError *error =
nil;
    //NSLog(@"storeUrl:%@", storeUrl);
    //创建调度对象实例,并设置使用的数据模型
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator
alloc] initWithManagedObjectModel:[self
managedObjectModel]];
    
    //告诉调度对象物理数据库文件的位置
    if (![_persistentStoreCoordinator
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl options:nil
error:&error]) {
        NSLog(@"%@, %@", error, [error
userInfo]);
    }
    return
_persistentStoreCoordinator;
}

//managedObjectModel初始化访问方法
-(NSManagedObjectModel *)managedObjectModel
{
    //如果已经创建了数据模型对象则直接返回
    if (_managedObjectModel !=
nil) {
        return
_managedObjectModel;
    }
    
    _managedObjectModel = [[NSManagedObjectModel
mergedModelFromBundles:nil]
retain];
    return
_managedObjectModel;
    
    //    NSLog(@"%d", _managedObjectContext.retainCount);
    
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeData