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仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...
随机推荐
- c,c++,java格式总结
c语言 java
- ActionBar开启Overlay Mode(覆盖模式)
以下内容参考自Android官网http://developer.android.com/training/basics/actionbar/overlaying.html#EnableOverlay ...
- Java NIO--初步认识
: 一.java NIO 和阻塞I/O的区别 1. 阻塞I/O通信模型 2. java NIO原理及通信模型 二.java NIO服务端和客户端代码实现 一.java NIO 和阻 ...
- c#语法与c++ 及 java语法的对比分析
早期开发的时候一直用c/c++,后来主要用的是java.最近需要用下c#. 熟悉了下c#,发现c#语言在对c/c++基础上做了很多简化,同时参考了很多java的语法习惯,本来在语法上c/c++就有很多 ...
- 网络爬虫 kamike.collect
Another Simple Crawler 又一个网络爬虫,可以支持代理服务器的FQ爬取. 1.数据存在mysql当中. 2.使用时,先修改web-inf/config.ini的数据链接相关信息,主 ...
- 通过sharedpreference两个程序共享数据
一.整体工程图 二.SharePreferenceWriteActivity.java package org.ourunix.android.sharepreferencewrite; i ...
- 在Vista以上版本运行WTL程序,有时候会提示“这个程序可能安装补正确...”的错误
在Win7/Vista下,如何以兼容模式运行exe? https://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx 问题描 ...
- HDOJ 1005
Input The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a ...
- 一、Mongo的安装
注:学习为主,平台为WIN7 32位系统 一.Mongo的安装 1.1 下载 到官方下载地址(http://www.mongodb.org/downloads)去下载所需要的版本 1.2 安装与运行 ...
- 仿StackOverflow开发在线问答系统
仿StackOverflow开发在线问答系统 [第二期11月9日开课]使用Python Flask Web开发框架实现一套类似StackOverflow的在线问答平台LouQA,具备提问,回答,评论点 ...