Swift - 使用Core Data进行数据持久化存储
一,Core Data介绍
1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象。
3,Core Data数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型。
4,与SQLite区别:只能取出整个实体记录,然后分解,之后才能得到实体的某个属性。
|
1
2
3
4
5
6
7
8
9
10
|
import Foundationimport CoreData@objc(User)class User: NSManagedObject { @NSManaged var password: String @NSManaged var username: String @NSManaged var id: NSNumber} |
三,Core Data的使用
1,首先在代码中引入CoreData库
|
1
|
import CoreData |
2,插入(保存)数据操作
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//获取管理的数据上下文 对象let app = UIApplication.sharedApplication().delegate as! AppDelegatelet context = app.managedObjectContext!var error:NSError?//创建User对象var user = NSEntityDescription.insertNewObjectForEntityForName("User", inManagedObjectContext: context) as! User//对象赋值user.id = 1user.username = "hangge"user.password = "1234"//保存if !context.save(&error){ println("不能保存:\(error?.localizedDescription)")} |
3,查询数据操作
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
//获取管理的数据上下文 对象let app = UIApplication.sharedApplication().delegate as! AppDelegatelet context = app.managedObjectContext!var error:NSError?//声明数据的请求var fetchRequest:NSFetchRequest = NSFetchRequest()fetchRequest.fetchLimit = 10 //限定查询结果的数量fetchRequest.fetchOffset = 0 //查询的偏移量//声明一个实体结构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,修改数据操作
|
1
2
3
4
5
6
7
8
9
|
//遍历查询的结果for info:User in fetchedObjects as! [User]{ //修改密码 info.password = "abcd" //重新保存 if !context.save(&error){ println("不能保存:\(error?.localizedDescription)") }} |
5,删除数据操作
|
1
2
3
4
5
6
7
8
9
10
|
//遍历查询的结果for info:User in fetchedObjects as! [User]{ //删除对象 context.deleteObject(info)}//重新保存-更新到数据库if !context.save(&error){ println("删除后保存:\(error?.localizedDescription)")} |
四,数据的存放位置

Swift - 使用Core Data进行数据持久化存储的更多相关文章
- iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储
使用Core Data进行数据持久化存储 一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成 ...
- [Xcode 实际操作]七、文件与数据-(14)数据持久化存储框架CoreData的使用:删除CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何删除数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(13)数据持久化存储框架CoreData的使用:编辑CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何修改数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(12)数据持久化存储框架CoreData的使用:查找CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何查找数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(11)数据持久化存储框架CoreData的使用:创建CoreData实体并插入数据
目录:[Swift]Xcode实际操作 本文将演示[CoreData]数据持久化存储框架的使用. 点击[Create a new Xcode project]创建一个新的项目 ->[Single ...
- iOS数据持久化存储:归档
在平时的iOS开发中,我们经常用到的数据持久化存储方式大概主要有:NSUserDefaults(plist),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...
- vuex数据持久化存储
想想好还是说下vuex数据的持久化存储吧.依稀还记得在做第一个vue项目时,由于刚刚使用vue,对vue的一些基本概念只是有一个简单的了解.当涉及到非父子组件之间通信时,选择了vuex.只是后来竟然发 ...
- 转载 -- iOS数据持久化存储
作者:@翁呀伟呀 授权本站转载 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方 ...
- iOS数据持久化存储
本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...
随机推荐
- iOS原生App与H5页面交互笔记
文/MikeZhangpy(简书作者)原文链接:http://www.jianshu.com/p/4ed3e5ed99c6著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 最近在做一个项 ...
- 一个库搞定各种分享--ShareSDK
ShareSDK是为iOS.Android.WindowsPhone提供社会功能的一个组件,开发者只需10分钟即可集成到自己的APP中,它不仅支持分享给QQ好友.微信好友.微信朋友圈.新浪微博.腾迅微 ...
- 随手记今天跟的几个iOS项目代码的问题
休了一阵子假期,今天刚回来上班,项目代码已经有挺大的变化了,我就先体验.发现.跟进问题. 第一个问题是点击某个cell就挂掉的现象,同事表示必现但挺神奇.由于挂掉的时候没有啥有意义的信息,所以先简单粗 ...
- java--偏向锁
Java偏向锁(Biased Locking)是Java 6引入的一项多线程优化.它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能. 轻量级锁也是一种多线程优化,它与偏向锁的区别在于, ...
- html中事件处理中的this和event对象
在用js编写页面事件处理代码时,会经常涉及到this和event对象,但有时在采用不同的事件处理,尤其是在与自定义的对象关联时,这些对象的指向变的有些复杂. 本文来详细介绍下各种场景下 这些对象 真正 ...
- 17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标:
17.1.1.4 Obtaining the Replication Master Binary Log Coordinates 获取复制Master Binary Log的坐标: 你需要master ...
- 一起学习CMake – 03
这一节我们就一起来看看如何用CMake来链接自己写的lib库,如何进行这些库文件的管理. 一个团队共同开发软件时,一般都是分模块进行作业的,每个人负责整个软件中的一部分,然后再整合成一个完整的软件系统 ...
- CSipSimple最新版本号(二)--加入视频功能
前面我们编译好了最新版本号的CSipSimple,并且測试已经能够打电话了.如今要把视频功能加上去. 不知道怎么编译的,能够看我的上一篇博文:CSipSimple最新版本号 我们先来看一下之前的项目是 ...
- UML九种图 之 包图和对象图
前言 对象图和包图依然是对系统的静态的描写叙述.UML九种图加上包图,事实上是十幅图. 包图 1.构成 2.包中的元素 类.接口.用例.构件.其他包等.( ...
- ELK 之一:ElasticSearch 基础和集群搭建
一:需求及基础: 场景: 1.开发人员不能登录线上服务器查看详细日志 2.各个系统都有日志,日志数据分散难以查找 3.日志数据量大,查询速度慢,或者数据不够实时 4.一个调用会涉及到多个系统,难以在这 ...