codeData数据持久化代码

来源:互联网 发布:域名投资十大人物 编辑:程序博客网 时间:2024/06/05 04:44

#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 = [selfpersistentStoreCoordinator];

    

    //如果成功创建调度对象,就在此基础上创建上下文对象

    if (coordinator !=nil) {

        _managedObjectContext = [[NSManagedObjectContextalloc] init];

        [_managedObjectContextsetPersistentStoreCoordinator:coordinator];

    }

    

    return_managedObjectContext;

}


-(NSPersistentStoreCoordinator *)persistentStoreCoordinator

{

    //如果已经创建好调度对象,则直接返回对象

    if (_persistentStoreCoordinator !=nil) {

        return_persistentStoreCoordinator;

    }

    

    //得到数据库的路径

    NSString *docs = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES)objectAtIndex:0];

    

    //指定数据库文件名称

    NSURL *storeUrl = [NSURLfileURLWithPath:[docs stringByAppendingPathComponent:@"linkman.sqlite"]];

    NSError *error =nil;

    //NSLog(@"storeUrl:%@", storeUrl);

    //创建调度对象实例,并设置使用的数据模型

    _persistentStoreCoordinator = [[NSPersistentStoreCoordinatoralloc] initWithManagedObjectModel:[selfmanagedObjectModel]];

    

    //告诉调度对象物理数据库文件的位置

    if (![_persistentStoreCoordinatoraddPersistentStoreWithType:NSSQLiteStoreTypeconfiguration:nilURL:storeUrl options:nilerror:&error]) {

        NSLog(@"%@, %@", error, [erroruserInfo]);

    }

    return_persistentStoreCoordinator;

}


//managedObjectModel初始化访问方法

-(NSManagedObjectModel *)managedObjectModel

{

    //如果已经创建了数据模型对象则直接返回

    if (_managedObjectModel !=nil) {

        return_managedObjectModel;

    }

    

    _managedObjectModel = [[NSManagedObjectModelmergedModelFromBundles:nil]retain];

    return_managedObjectModel;

    

    //    NSLog(@"%d", _managedObjectContext.retainCount);

    

}


0 0