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 Foundation import 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 ! AppDelegate let context = app.managedObjectContext! var error: NSError ? //创建User对象 var user = NSEntityDescription .insertNewObjectForEntityForName( "User" , inManagedObjectContext: context) as ! User //对象赋值 user.id = 1 user.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 ! AppDelegate let 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仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...
随机推荐
- 外设:K9F2G08 nandflash 底层读写、控制驱动程序,可随机读写
/****************************************************************************** Copyright (C), 2001- ...
- sql执行疑问
遇到一个奇怪的事情,学习执行计划的时候写了这么一个sql来看执行计划的执行顺序, SELECT COUNT(*) FROM SIC84 WHERE AAC001 IN (SELECT AAC001 F ...
- Redis中的value包含中文显示的问题?
linux 系统 redis不识别中文 如何显示中文 在Redis中存储的value值是中文“马拉斯加”Shell下get获取后展示的结果为:\xc2\xed\xc0\xad\xcb\xb9\xbc ...
- vmware时间不同步的问题
请以管理员身份运行(root)
- Linux常用命令 新手必看
文件和目录cd /home 进入 '/ home' 目录'cd .. 返回上一级目录cd ../.. 返回上两级目录cd 进入个人的主目录cd ~user1 进入个人的主目录cd - 返回上次所在的目 ...
- JVM -- CMS
并发的标记—清除(Concurrent Mark Sweep,缩写为 CMS)收集器,使得在整个收集的过程中只是很短的暂停应用的执行,可通过在 JVM 参数中设置-XX:UseConcMarkSwee ...
- main函数的参数问题 (转载)
void main(int arg ,char *arv[]){} arg -- 命令行参数总个数arv[0] -- 参数1,程序名 arv[1] -- 参数2,字符串 arv[2] -- 参数3,字 ...
- 函数可以作为Javascript对象(哈希表)的键吗
一般Javascript书在讲解对象时,都指出Javascript中的对象可以作为哈希表,存储键值数据.通常情况下,键为字符串,如果键是数字的话,实际上在内部也会转换为字符串. 比如 var o = ...
- linux cmd: linux下解压命令大全
linux下解压命令大全 .tar 解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————— ...
- BZOJ 4152: [AMPPZ2014]The Captain( 最短路 )
先按x排序, 然后只有相邻节点的边才有用, 我们连起来, 再按y排序做相同操作...然后就dijkstra ---------------------------------------------- ...