您的位置:首页 > 移动开发 > IOS开发

IOS开发:CoreData的应用

2015-10-07 20:35 435 查看
CoreData 最简单的一个数据插入操作:

1 先创建一个工程,注意要勾选 Use Core Data 项

2 在“项目名称.xcdatamodeld 项添加一个表"Person",并增加两个字段name,age”

3 选中刚创建好的表,Editor--Create NSManagedObject SubClass... 将刚才创建的表生成为类

4 在Appdelegate.m中引入刚生成的Person,然后编写如下代码,即可做一个简单的数据插入操作

//打印数据库的路径
NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);

//创建实体描述 (1 实体类,2临时存储的上下文)
NSEntityDescription * description = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];

//创建Person对象(1 实体描述  2临时存储的上下文)
Person * person = [[Person alloc]initWithEntity:description insertIntoManagedObjectContext:self.managedObjectContext];

//实体对象赋值
person.name = @"张三";
person.age = @20;

//一定要记着保存
[self.managedObjectContext save:nil];


fetch 请求数据

//********* fetch **********
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
// Specify criteria for filtering which objects to fetch
//谓词 做条件过滤  不是必须项
//    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"classesShip == %@", self.currentClasses];
//    [fetchRequest setPredicate:predicate];
// Specify how the fetched objects should be sorted
//排序方式  不是必须项 这里的key按某个字段排序这里是按age排序 最后YES为升序 NO为降序
//    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"age"  ascending:YES];
//    [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sortDescriptor, nil]];

NSError *error = nil;
//发送请求并返回数据
NSArray *fetchedObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {

}else{
Person * person1 = fetchedObjects[0];
NSLog(@"%@,%@",person1.name,person1.age);

//修改
person1.name = @"李四";
//保存
[self.managedObjectContext save:nil];

//删除
[self.managedObjectContext deleteObject:fetchedObjects[0]];
//保存
[self.managedObjectContext save:nil];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: