CoreData-基本语法.

1. 在使用StoryBoard时通过 UIApplicationDelegate 来获得AppDelegate 从而获得内容上下文

AppDelegate * delegateVC = [UIApplication sharedApplication].delegate;

self.context = delegateVC.managedObjectContext;

2. 数据查询.

设置一个请求用来进行查询

NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];

设置一个描述实体类.

NSEntityDescription * description = [NSEntityDescription entityForName:@"Student" inManagedObjectContext:self.context];

将实体添加到请求中

[fetchRequest setEntity:description];

开始请求 返回的是数据库中的相关的数组.

NSArray * array = [self.context executeFetchRequest:fetchRequest error:nil];

3. 添加数据

得到一个描述实体类   可以理解为向表Student中添加一条记录. 此时的student并没有具体的值.

Student * student = [NSEntityDescription insertNewObjectForEntityForName:@"Student" inManagedObjectContext:self.context];

给student赋值.根据自己定义的数据结构

student.name = @"111";      student.phoneNumber = @"222";       student.sex = @"f";

保存数据.

[self.context save:nil];

4. 删除数据.

得到要删除的数据对象.

NSManagedObject * object = _dataArray[indexPath.row];

删除数据库中的对象.

[self.context deleteObject:object];

更新数据库

[self.context save:nil];

5  进行版本升级.

在AppDelegate的 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator 的方法中填上允许版本升级的代码.

支持版本迁移, 默认为nil

NSDictionary * dic = @{NSMigratePersistentStoresAutomaticallyOption:@YES, NSInferMappingModelAutomaticallyOption:@YES};

if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:dic error:&error])

6 在数据查询中直接进行排序.

获得请求并关联实体

NSFetchRequest * request = [[NSFetchRequest alloc] initWithEntityName:@"Student"];

设置排序字段.

NSSortDescriptor * sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];

将排序添加到请求中.

[request setSortDescriptors:@[sort]];

coreData查询操作,返回的是一个数组.

NSArray * dataArray = [self.context executeFetchRequest:request error:nil];

7 让最后添加的数据最先显示.

设置数据在TableView中插入的位置.

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

设置插入的位置,以及插入的动画.

[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObjects:index, nil] withRowAnimation:UITableViewRowAnimationRight];

//设置滚动效果

[self.tableView scrollToRowAtIndexPath:index atScrollPosition:UITableViewScrollPositionTop animated:YES];

时间: 2024-12-17 02:46:45

CoreData-基本语法.的相关文章

ios coredata 老代码备用参考

iPhone OS在2009年6月份推出3.0版本SDK,其中一个特性是引入了Mac SDK中的core data.是一种ORM(Object Relationships Mapping)解决方案,类似java的Hibernate. 有了这个,就不必像ios简单sqlite使用那样编写繁琐代码了,减少工作量,也可以回避使用c的语法,降低ios开发的技术门槛.总之,可降低开发成本,提高项目质量. 本文在很大程度上参考了<Core Data Tutorial for iOS>. 创建ios项目 为

iOS开发——数据持久化OC篇&amp;(六)CoreData详解

CoreData详解 介绍: 在Cocoa环境下,如果你想使用数据库(如sqlite),你可以使用sql语句的方式通过相关的工具类进行数据库的直接操作.当然你也可以通过别人封装之后的一些简单框架,使得你的操作更加简单(如FMDB BNRPersistence). Cocoa框架本身提供了CoreData这个API可方便的让开发者通过操作对象的方式在操作数据库.CoreData是一个对象图(object graph)以及持久化的管理框架.我们可以通过CoreData创对象,设置好象之间的关系,然后

认识CoreData—使用进阶

之前两篇文章都比较偏理论,文字表达比较多一些,但都是干货!学习时先理解理论知识,才能更好的帮助后面的理解.在这篇文章中,将会涉及关于CoreData的一些复杂操作,这些操作会涉及分页查询.模糊查询.批处理等高级操作.通过这些操作可以更好的使用CoreData,提升CoreData性能.文章中将会出现大量示例代码,通过代码的方式更有助于理解. 文章内容还会比较多,希望各位耐心看完.文章中如有疏漏或错误,还请各位及时提出,谢谢! NSPredicate 概述 在iOS开发过程中,很多需求都需要用到过

swift3.0:CoreData的使用

一.介绍 CoreData不像slqite3那样编写代码繁琐,同时避免了使用了SQL语句的麻烦,也可以回避使用C语言的语法,降低了iOS开发的技术门槛. CoreData可降低开发成本,提高代码质量.它是一个完全面向对象的API,能够合理管理内存,负责在数据库中存储数据,底层也是由类似 于SQL的技术实现的.CoreData是持久化存储的最佳方式,数据最终的存储类型可以是SQLite数据库.XML.二进制.内存或自定义数据类型 它和SQLite的区别是:只能取出整个实体记录,然后分离,之后才能得

swift3.0 coredata 的使用

//swift3.0在语法上有很大的改变,以简单的增删改查为例,如下: //User类如下: import Foundation import CoreData extension User { @nonobjc public class func fetchRequest() -> NSFetchRequest<User> { return NSFetchRequest<User>(entityName: "User"); } @NSManaged pu

Objective-C语法汇总

1.方法前的加减号 Objective-C中是没有public与private的概念的,即可以认为全部都是public.减号表示的是一个函数.方法.消息的开始.加号则表示不需要创建一个类的实例,其他类就可以直接调用这个类中的函数(也可以说加号表示静态的成员函数) 2.Objective-C语言#import引入头文件时,.h和.m有什么区别? .h文件是头文件,包含了类,类型.函数与常数的声明: .m文件是源代码文件: .mm :源代码文件.带有这种扩展名的源代码文件,除了可以包含Objecti

数据持久化-CoreData、SQLite、FMDB

1.CoreData 1.1 CoreData概述 1)Core data 是数据持久存储的最佳方式 2)Core Data 基于model-view-controller(mvc)模式下,为创建分解的cocoa应用程序提供了一个灵活和强大的数据模型框架. 3)Core Data可以是你以图形界面的方式快速的定义app的数据模型,同时在你的代码中容易获取到它. Core Data提供了基础结构去处理常用的功能,例如:保存,恢复,撤销和重做,允许你在app中继续创建新的任务.在使用 Core Da

CoreData的简单使用(一)数据库的创建

iOS有多种数据持久化得方式 plist文件(属性列表) preference(偏好设置,NSUserDefaults) NSKeyedArchiver(归档,用的不多) SQLite 3 (需要导入库libsqlite3.0.tbd,并且在使用时要包含<sqlite3.h>头文件) CoreData (IOS5后出的框架,能帮助我们不写SQL语句将数据保存在SQLite数据库文件中,并对数据进行管理) 1.新建一个工程 (1)先不勾选Xcode为我们提供的Use Core Data,自己通过

iOS-数据持久化-CoreData

CoreData详解 介绍: 在Cocoa环境下,如果你想使用数据库(如sqlite),你可以使用sql语句的方式通过相关的工具类进行数据库的直接操作.当然你也可以通过别人封装之后的一些简单框架,使得你的操作更加简单(如FMDB BNRPersistence). Cocoa框架本身提供了CoreData这个API可方便的让开发者通过操作对象的方式在操作数据库.CoreData是一个对象图(object graph)以及持久化的管理框架.我们可以通过CoreData创对象,设置好象之间的关系,然后

iOS 开发系列:CoreData Object 变成 Fault 的一种方式

@quote: 近来一直与 CoreData 打交道,这是一个架构庞大.学习曲线比较陡峭的 iOS 组件,每次遇到问题都会对其有新的认识. 这次就只讲一点,关于错误认知 Object(NSManagedObject)与 Context (NSManagedContext)的引用关系而导致的 Fault 问题. 用过 CoreData 的都应该对其基本使用有个最直接的了解,那就是:Object 都是放在 Context 里的,同时 Object 也会有一个 「managedObjectContex