CoreData的简单创建和增删改查

来源:互联网 发布:python 打开文件函数 编辑:程序博客网 时间:2024/06/07 09:16

使用步骤:
1、创建模型文件 相当于数据库
2、添加实体 相当于表
3、创建实体类 相当于模型类
4、生成上下文,用于关联模型文件生成数据库
5、保存对象到数据库
6、从数据库获取对象
7、更新数据
8、删除数据

1、模型文件在新建文件里的CoreData下的Data Model
2、点击相应的模型文件在右侧下方有“Add Entity”按钮,用于添加实体,之后表选项在相应表的Attribute处增加
3、实体类在新建文件里的CoreData下的 NSManagedObject subclass,创建过程中勾选表
4、生成上下文之前
在targets的build phases的Link Binary With Libraries加入CoreData.framework然后#import 《CoreData/CoreData.h》
@property(strong,nonatomic)NSManagedObjectContext *context;

//创建上下文NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init];//后面的步骤是关联模型文件//创建一个模型对象(传一个nil会把bundle下的所有模型文件关联起来)NSManagedObjectModel *model = [NSManagedObjectModel mergeModelFromBundles:nil];//持久化存储调度器NSPersistentStoreCoordinator *store = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];//存储数据库的名字NSError *error = nil;//获取document目录NSString *doc = [NSSearchPathForDirectoriseInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];//数据库保存的路径NSString *sqlitePath = [doc stringByAppendingPathComponent:@"company.sqlite"];[store addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:sqlitePath] options:nil error:&error];context.persistentStoreCoordinator = store;self.context = context;

5、添加数据之前要先在viewDidLoad调用[self setupContext];
//创建员工

Emoloyee *emp1 = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManageObjectContext:self.context];//设置员工属性emp1.name = @"zhangsan";emp1.age = @28;emp1.height = @1.80;//通过上下文保存NSError *error = nil;[self.context save:&error];if(!error){NSLog(@"success");}else{NSLog(@"%@",error);}

6、从数据库读取信息

//创建一个请求对象(填入要查询的实体类-表名)NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Employee"];//读取信息NSError *error = nil;//emps就是查找到的数据NSArray *emps = [self.context executeFetchRequest:request error:&error];if(!error){    NSLog(@"emps:%@",emps);    for(Employee *emp in emps){        NSLog(@"%@ %@ %@",emp.name,emp.age,emp.height);}else{NSLog(@"%@",error);

做过滤查询的时候设置request的predicate属性就好
结果排序设置request的sortDescriptors属性

7、所有的操作都是暂时在内存里,必须要调用save来同步数据库,否则无法保存。
本博客中emps只是一个NSArray,更新数据时要先新建一个Employee对象指向emps来修改。

Employee *emp = emps[0];emp.height = @1.7;

8、删除数据是查询到emps数据后

for(Employee *emp in emps){    [self.context deleteObject:emp];}[self.context save:nil]
0 0
原创粉丝点击