CoreData的使用

  1.创建一个 NSManagedObjectModel 对象数据模型


通过懒加载创建  

返回应用程序的托管对象模型。如果模型不存在,创建的应用程序的模型。

- (NSManagedObjectModel *)managedObjectModel {

    if (_managedObjectModel != nil) return _managedObjectModel;


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

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

    return _managedObjectModel;

}


2. 创建NSPersistentStoreCoordinator 持久化存储协调者,包含数据存储的名字和位置

返回应用程序的持久性存储协调员。如果协调器不存在,创建它。



- (NSPersistentStoreCoordinator *)presistentStoreCoordinator{

    if (_presistentStoreCoordinator == nil) {

        

        NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"talenkr.sqlite"];

        NSDictionary *option = [NSDictionary dictionaryWithObjectsAndKeys:

                                [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,

                                [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,

                                nil];        

        NSError *error = nil;

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

        if (![_presistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType

configuration:nil URL:storeURL options:option error:&error]) {

            abort();

        }    


    }

    return _presistentStoreCoordinator;

}


3. 创建NSManagedObjectContext 管理对象的上下文,类似于应用程序和数据存储之间的缓冲区,可以增加删除修改查找或者管理对象


- (NSManagedObjectContext *)managedObjectContext

{

    if (_managedObjectContext == nil) {

        

        if (![NSThread isMainThread]) {

            [self performSelectorOnMainThread:@selector(managedObjectContext) withObject:nil waitUntilDone:YES];

            return _managedObjectContext;

        }

        NSPersistentStoreCoordinator *coordinator = self.presistentStoreCoordinator;

        if (coordinator != nil) {

            _managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

            _managedObjectContext.persistentStoreCoordinator = coordinator;

        }

        return _managedObjectContext;

    }

    return _managedObjectContext;

}


4. 提供一个对象保存方法给外界使用

  /*

             这个实现替换为适当的代码来处理错误。

             abort()会导致应用程序生成一个崩溃日志和终止。你不应该使用这个函数在船舶应用程序中,虽然它可能是有用的在开发过程中。如果它是不可能从错误中恢复,显示警报面板指示用户通过按Home键退出应用程序。

             */


- (void)saveContext{

    NSError *error = nil;

    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;

    

    if (managedObjectContext != nil) {

        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {

          

            abort();

        }

    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值