iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储
使用Core Data进行数据持久化存储
- 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象。
- 2,虽然其底层也是由类似于SQL的技术来实现,但我们不需要编写任何SQL语句,有点像Java开发中的Hibernate持久化框架
- 3,Core Data数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型。
- 4,与SQLite区别:只能取出整个实体记录,然后分解,之后才能得到实体的某个属性。







- import Foundation
- import CoreData
- @objc(User)
- class User: NSManagedObject {
- @NSManaged var password: String
- @NSManaged var username: String
- @NSManaged var id: NSNumber
- }
三,Core Data的使用
1,首先在代码中引入CoreData库
2,插入(保存)数据操作
- //获取管理的数据上下文 对象
- let app = UIApplication.sharedApplication().delegate as! AppDelegate
- let context = app.managedObjectContext!
- var error:NSError?
- //创建User对象
- var user = NSEntityDescription.insertNewObjectForEntityForName("User",
- inManagedObjectContext: context) as! User
- //对象赋值
- user.
- user.username = "hangge"
- user.password = "
- //保存
- if !context.save(&error){
- println("不能保存:\(error?.localizedDescription)")
- }
3,查询数据操作
- //获取管理的数据上下文 对象
- let app = UIApplication.sharedApplication().delegate as! AppDelegate
- let context = app.managedObjectContext!
- var error:NSError?
- //声明数据的请求
- var fetchRequest:NSFetchRequest = NSFetchRequest()
- fetchRequest.fetchLimit = //限定查询结果的数量
- fetchRequest.fetchOffset = //查询的偏移量
- //声明一个实体结构
- var entity:NSEntityDescription? = NSEntityDescription.entityForName("User",
- inManagedObjectContext: context)
- //设置数据请求的实体结构
- fetchRequest.entity = entity
- //设置查询条件
- let predicate = NSPredicate(format: "id= '1' ", "")
- fetchRequest.predicate = predicate
- //查询操作
- var fetchedObjects:[AnyObject]? = context.executeFetchRequest(fetchRequest, error: &error)
- //遍历查询的结果
- for info:User in fetchedObjects as! [User]{
- println("id=\(info.id)")
- println("username=\(info.username)")
- println("password=\(info.password)")
- }
4,修改数据操作
- //遍历查询的结果
- for info:User in fetchedObjects as! [User]{
- //修改密码
- info.password = "abcd"
- //重新保存
- if !context.save(&error){
- println("不能保存:\(error?.localizedDescription)")
- }
- }
5,删除数据操作
- //遍历查询的结果
- for info:User in fetchedObjects as! [User]{
- //删除对象
- context.deleteObject(info)
- }
- //重新保存-更新到数据库
- if !context.save(&error){
- println("删除后保存:\(error?.localizedDescription)")
- }
四,数据的存放位置

iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储的更多相关文章
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- iOS开发——新特性Swift篇&Swift 2.0 异常处理
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...
- iOS开发——网络编程Swift篇&Alamofire详解
Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...
- ios开发——实用技术总结Swift篇&swift常用开发技术总结
swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): lazy var shops:Array<Dictionary<String, String>& ...
- iOS开发——网络编程Swift篇&(八)SwiftyJSON详解
SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...
- iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画
CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...
- iOS开发零基础--Swift篇 元组
元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢? 它是一种数据结构,在数学中应用广泛 类似于数组或者字典 可以用于定义一组数据 组成元组类型的数据可以称为“元素” 元组的定义 ...
- iOS开发——网络编程Swift篇&(七)NSURLSession详解
NSURLSession详解 // MARK: - /* 使用NSURLSessionDataTask加载数据 */ func sessionLoadData() { //创建NSURL对象 var ...
- iOS开发零基础--Swift篇 循环
循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...
随机推荐
- 分布式发布订阅消息系统 Kafka 架构设计
我们为什么要搭建该系统 Kafka是一个分布式.分区的.多副本的.多订阅者的“提交”日志系统. 我们构建这个系统是因为我们认为,一个实现完好的操作日志系统是一个最基本的基础设施,它可以替代一些系统来作 ...
- MySql相关及如何删除MySql服务
又会一招–如何删除MySql服务 进入“控制面板->管理工具->服务”查看才发现,虽然MYSQL已经卸载了,但是MYSQL服务仍然残留在系统服务里.又不想改服务名,改怎么办呢. 后来上百度 ...
- IOS init initWith 等相关集中
1.initWithCoder 当一个view从nib初始化的时候,会调用这个函数. 用keyedArchiver序列化一个类的实力,后面用keyedUnArchiver拿回来的时候会调用到 ...
- 二分+叉积判断方向 poj 2318 2398
// 题意:问你每个区域有多少个点 // 思路:数据小可以直接暴力 // 也可以二分区间 #include <cstdio> #include <cstring> #inclu ...
- 产品设计敏感度之kindle touch 4
这种训练方法来自于<嵌入式系统开发之道:菜鸟成长日志与项目经理的私房菜>,名字真够长的,但是里面都是干货,我虽然之前有短评这本书,但是后面看完之后会继续再做一个详细的感悟记录. 选出身边的 ...
- 轻松突击ThreadLocal
本文出自 代码大湿 代码大湿 ThreadLocal是用来保存线程的本地变量,可以保证每个线程都有一个自己的变量(包括static变量). 本文所有代码请点击我 1 看个实际场景. 我们要设计一个序列 ...
- Native libraries .so.XY failing to link at runtime
What you need to do is edit the configure file. And find out this: SLIBNAME='$(SLIBPREF)$(FULLNAME)$ ...
- ubuntu14.04.03 vsftpd
apt-get install vsftpd /etc/vsftpd.conf配置Example listen=YES anonymous_enable=NO local_enable=YES wri ...
- B+树|MYSQL索引使用原则
MySQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了.为什么要改成这样,之前都没有听过 ...
- 【转】Maven实战(九)---模块聚合和继承
原博文出自于:http://blog.csdn.net/liutengteng130/article/details/47001831 感谢! 类之间有聚合和继承关系,Maven也具备这样的设计原 ...