iOS入门(四十) CoreData

NSPersistentStoreCoordinator  (持久存储协调者) 数据连接器类

NSPersistentStore  对应一个文件


NSManagedObjectContext  数据管理器类,被管理对象上下文(相当于一个临时数据库对数据进行更改,通过saveContext保存更改)

存放NSManagedObject对象


NSManagedObjectModel  数据模型器类(Entity)


- (void)saveContext;//保存

 

- (NSURL *)applicationDocumentsDirectory;//应用文件路径

@dynamic告诉编译器,属性的setter与getter方法由用户自己实现,不自动生成。(当然对于readonly的属性只需提供getter即可)。假如一个属性被声明为@dynamic var,然后你没有提供@setter方法和@getter方法,编译的时候没问题,但是当程序运行到instance.var =someVar,由于缺setter方法会导致程序崩溃;或者当运行到 someVar = var时,由于缺getter方法同样会导致崩溃。编译时没问题,运行时才执行相应的方法,这就是所谓的动态绑定。


//0指向后端存储的文件

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

  //1.获取Model
      NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreData" withExtension:@"momd"];
//2获取文件存储协调器   我有中介 中介有MODEL
      _persistentStoreCoordinat or = [[NSPersistentStoreCoordin ator alloc] initWithManagedObjectMod el:[self managedObjectModel]];
  //3.配置文件案 存储协调器后连接的文件系统(内存内) 中介有了Model之后 又知道了数据
      if (![_persistentStoreCoordinat or addPersistentStoreWithTy pe:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
  //4新增受托管的对象的文本
            _managedObjectContext = [[NSManagedObjectContext alloc] init];
  //5将受托管对象文本与文件储存协调器连接起来
            [_managedObjectContext setPersistentStoreCoordi nator:coordinator];


 AppDelegate * appDelegate = [[UIApplication sharedApplication] delegate];


    [self.tableView reloadData];

    [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0];

    [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];

    NSIndexPath * index = [NSIndexPath indexPathForRow:0 inSection:0];

    [self.tableView insertRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationFade];


//    [self.managedObjectContext save:nil];

    AppDelegate * app = [[UIApplication sharedApplication] delegate];

    [app saveContext];


版本迁移


- (NSPersistentStoreCoordinator *)persistentStoreCoordinator

{

    if (_persistentStoreCoordinator != nil) {

        return _persistentStoreCoordinator;

    }

    

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

//        [[NSFileManager defaultManager] removeItemAtURL:storeURL error:nil];

    

    NSError *error = nil;

    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:@{NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES} error:&error]) {


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值