iOS开发 ☞ CoreData基本使用

创建数据模型(表)

1、在Xcode创建的时候选择 Use Core Data 或者再已经创建好的项目中Add File
在这里插入图片描述

2、点击Add Entity 添加数据实体(表),并且给表添加字段

在这里插入图片描述

3、点击表,右侧有Codegen选项,默认是Class Defination 在我们Build工程的时候会自动创建,但是不会在Xcode目录中显示,使用时 需要引入头文件,如下图

在这里插入图片描述
使用时
在这里插入图片描述

这里我们使用手动生成,Codegen选项选择Manual/None 如下图:
在这里插入图片描述
此时,Xcode不再自动生成实体类

我们可以手动生成这些文件,首先点击后缀为xcdatamodeld的文件,然后点击Editor
在这里插入图片描述
这里需要注意,如果我们Codegen没有选择手动模式,那么系统可能已经生成过了,此时再手动生成文件会报错
在这里插入图片描述

这个时候我们需要将Codegen改为手动模式,clean一下,就可以了

手动模式生成的实体类文件如下图:
在这里插入图片描述

创建CoreData栈

初始化CoreData栈需要一步步初始化三个对象结构
1、NSManagedObjectModel
2、NSPersistentStoreCoordinator
3、NSManagedObjectContext

代码如下

- (NSManagedObjectModel *)managedObjectModel {
    if (!_managedObjectModel) {
        NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"CoreDataDemo" withExtension:@"momd"];
        _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    }
    return _managedObjectModel;
}

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
    if (!_persistentStoreCoordinator) {
        _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];
        NSURL *sqliteURL = [[self documentDirectoryURL] URLByAppendingPathComponent:@"CoreDataDemo.sqlite"];
        NSError *error;
        [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:sqliteURL options:nil error:&error];
    
        if (error) {
            NSLog(@"failed to create persistentStoreCoordinator");
        }
}
                        
    return _persistentStoreCoordinator;
}
                        
// 用来获取 document 目录
- (nullable NSURL *)documentDirectoryURL {
     return [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].firstObject;
}


- (NSManagedObjectContext *)context {
     if (!_context) {
        _context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType
                ];
        _context.persistentStoreCoordinator = self.persistentStoreCoordinator;
    }
    return  _context;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值