iOS入门(四十) CoreData

本文深入探讨了iOS开发中Swift语言的应用实践,包括基本语法、数据结构、面向对象编程、错误处理、并发编程等核心概念。通过具体实例解析,帮助开发者掌握Swift语言在iOS开发中的高效使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
 //3.配置文件案 存储协调器后连接的文件系统(内存内) 中介有了Model之后 又知道了数据
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error])
 //4新增受托管的对象的文本
        _managedObjectContext = [[NSManagedObjectContext alloc] init];
 //5将受托管对象文本与文件储存协调器连接起来
        [_managedObjectContext setPersistentStoreCoordinator: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、付费专栏及课程。

余额充值