Core Data数据操作
1.建立学生实体,插入100条数据
2.按条件查询学生数据
3.统计学生信息
4.修改学生信息
5.删除学生数据
import UIKit
import CoreData
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//1.建立模型文件
//2.建立CoreDataStack
//3.设置AppDelegate
//插入数据
insertStudents()
//查询数据
fetchStudents()
//统计信息
countStudents()
//修改数据
updateStudents()
//删除数据
deleteStudents()
}
}
extension ViewController{
func insertStudents(){
let strs1 = ["a","b","c","d","e","f","g","h","i","j"]
let strs2 = ["01","02","03","04","05","06","07","08","09","10"]
for i in 0..<100 {
let sno = "\(1001+i)"
let name = strs1[i/10] + strs2[i%10]
let score = i
insertStudent(sno: sno, name: name, score: score)
}
CoreDataStack.defaultStack().saveContext()
}
func insertStudent(sno sno:String,name:String,score:Int){
let context = CoreDataStack.defaultStack().context
let student = NSEntityDescription.insertNewObjectForEntityForName("student", inManagedObjectContext: context) as! Student
student.sno = sno
student.name = name
student.score = score
}
func fetchStudents(){
let context=CoreDataStack.defaultStack().context
let request=NSFetchRequest(entityName:"Student")
let sort = NSSortDescriptor(key:"sno", ascending:true, selector:"localizedStandardCompare")
request.sortDescriptors = [sort]
//request.predicate = NSPredicate(format:"score > 60")
//request.predicate = NSPredicate(format:"name like 'a*'")
do{
let students=(try context.executeFetchRequest(request)) as! [Student]
for student in students{
print("\(student.sno!),\(student.name!),\(student.score!)")
}
}catch{
print("Fetch failed")
}
}
func countStudents(){
// let context = CoreDataStack.defaultStack().context
//
// let request = NSFetchRequest(entityName:"Student")
// request.predicate = NSPredicate(format:"score > 90")
// request.resultType = CountResultType
//
// do {
// let entries = (try context.executeFetchRequest(request))
// let count = entries.first!.integerValue
// print("Count:\(count)")
// }catch{
// print("Fetch failed......")
// }
let context = CoreDataStack.defaultStack().context
let request=NSFetchRequest(entityName:"Student")
request.resultType = .DictionaryResultType
let description = NSExpressionDescription()
description.name="AverageScore"
let args=[NSExpression(forKeyPath:"score")]
description.expression = NSExpression(forFunction: "average", arguments:args)
description.expressionResultType = .FloatAttributeType
do {
let entries = (try context.executeFetchRequest(request))
let result=entries.first! as! NSDictionary
let averageScore = result["AverageScore"]!
print("Average:\(averageScore)")
}catch{
print("Fetch failed......")
}
}
func updateStudents(){
let context=CoreDataStack.defaultStack().context
let request = NSFetchRequest(entityName:"Student")
request.predicate = NSPredicate(format:"name like 'a*'")
do{
let students = (try context.executeFetchRequest(request)) as! [Student]
for student in students{
student.score = 100
}
}catch{
print("Fetch failed")
}
CoreDataStack.defaultStack().saveContext()
}
func deleteStudents(){
let context = CoreDataStack.defaultStack().context
let request=NSFetchRequest(entityName:"Student")
request.predicate = NSPredicate(format:"score < 60")
do{
let students = (try context.executeFetchRequest(request)) as! [Student]
for student in students{
context.deleteObject(student)
}
}catch{
print("Fetch failed......")
}
CoreDataStack.defaultStack().saveContext()
}
}
Core Data数据操作的更多相关文章
- Core Data(数据持久化)
Core Data可能是OS X和iOS中最容易被误解的框架之一了.为了帮助大家理解,我们将快速研究Core Data,来看一下它是关于什么的.为了正确使用Core Data, 有必要理解其概念.几乎 ...
- Core Data数据持久性存储基础教程-备用
摘要 就像我一直说的,Core Data是iOS编程,乃至Mac编程中使用持久性数据存储的最佳方式,本质上来说,Core Data使用的就是SQLite,但是通过一系列特性避免了使用SQL的一些列的麻 ...
- iOS教程:Core Data数据持久性存储基础教程
目录[-] 创建Core Data工程 创建数据模型 测试我们的数据模型 来看看SQL语句的真面目 自动生成的模型文件 创建一个表视图 之后看些什么? 就像我一直说的,Core Data是iOS编程, ...
- Core Data 基本数据操作 增删改查 排序
所有操作都基于Core Data框架相关 API,工程需要添加CoreData.framework支持 1.增 NSEntityDescription insertNewObjectForEntit ...
- Core Data 数据出现Fault
I am mapping Json Data from Server using Restkit and I am Displaying those data by fetching from db. ...
- 在.net core中数据操作的两种方式(Db first && Code first)
在开发过程中我们通常使用的是Db first这种模式,而在.net core 中推荐使用的却是 code first 反正我是很不习惯这种开发模式 于是就搜寻整个微软的官方文档,终于找到了有关.net ...
- iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】
在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...
- iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储
使用Core Data进行数据持久化存储 一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成 ...
- 四种数据持久化方式(下) :SQLite3 和 Core Data
在上文,我们介绍了iOS开发中的其中2种数据持久化方式:属性列表.归档解档. 本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文 ...
随机推荐
- 文本对象模型(Document Object Model)
本文内容: 1. 概述 2. DOM中的节点类型 3. DOM节点的选取 4. 存取元素属性 5.DOM元素的增删 6.小结 ★ 概述 文本对象模型(DOM)是一个能够让程序和脚本动态访问和更新文档内 ...
- 购买SSL证书到部署网站遇到的若干问题
作为一个菜鸟,对于SSL证书,我了解不多,只知道用了它网站更安全,所以这次使用SSL证书途中遇到了各方面的各种问题,到今天为止终于全部解决. 一.证书格式 前两天在那什么云上面买了个SSL证书,是Wo ...
- webservice 原理
webservice 原理1.soap协议,其实就是用http协议来传输xml格式的数据,可以post,get.一般有post.2.服务端有:本地程序代码(也不是dll)和xml格式的文件用来描述dl ...
- java阻塞队列
对消息的处理有些麻烦,要保证各种确认.为了确保消息的100%发送成功,笔者在之前的基础上做了一些改进.其中要用到多线程,用于重复发送信息. 所以查了很多关于线程安全的东西,也看到了阻塞队列,发现这个模 ...
- activiti 工作流
1. 工作流的概念 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实 ...
- sublimeCodeIntel 的配置
在项目的根目录目录下建立.codeintel/config 但是在windows 需要进入dos 环境下建立.以点开头的文件夹和文件.资源管理器不允许创建点开头的文件或文件夹,但在命令提示符下是可以的 ...
- django使用笔记
django的具体使用可以看官方手册http://djangobook.py3k.cn,这里主要记录使用django中遇到的问题. 1.中文编码问题. 因为我们用到的东西基本上都有中文,在settin ...
- Exchange 2013 、Lync 2013、SharePoint 2013 二
上一篇简单介绍了安装过程,本篇主要集成 上一篇文章有关于头像的显示问题,engineer 给出了一个连接,介绍了Exchange和Lync的集成过程,根据介绍都配制了一遍. 一.Exchange 和 ...
- 字母排序问题(c++实现)
描述:编写一个程序,当输入不超过60个字符组成的英文文字时,计算机将这个句子中的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度 相同.例如: 输入: THE PRICE OFB ...
- 趣味题:恺撒Caesar密码(c++实现)
描述:Julius Caesar 生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是Caesar 军团中的一名军官,需要把Caesar 发送的消息破译出来.并提供给你 ...