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数据操作的更多相关文章

  1. Core Data(数据持久化)

    Core Data可能是OS X和iOS中最容易被误解的框架之一了.为了帮助大家理解,我们将快速研究Core Data,来看一下它是关于什么的.为了正确使用Core Data, 有必要理解其概念.几乎 ...

  2. Core Data数据持久性存储基础教程-备用

    摘要 就像我一直说的,Core Data是iOS编程,乃至Mac编程中使用持久性数据存储的最佳方式,本质上来说,Core Data使用的就是SQLite,但是通过一系列特性避免了使用SQL的一些列的麻 ...

  3. iOS教程:Core Data数据持久性存储基础教程

    目录[-] 创建Core Data工程 创建数据模型 测试我们的数据模型 来看看SQL语句的真面目 自动生成的模型文件 创建一个表视图 之后看些什么? 就像我一直说的,Core Data是iOS编程, ...

  4. Core Data 基本数据操作 增删改查 排序

    所有操作都基于Core Data框架相关 API,工程需要添加CoreData.framework支持 1.增  NSEntityDescription insertNewObjectForEntit ...

  5. Core Data 数据出现Fault

    I am mapping Json Data from Server using Restkit and I am Displaying those data by fetching from db. ...

  6. 在.net core中数据操作的两种方式(Db first && Code first)

    在开发过程中我们通常使用的是Db first这种模式,而在.net core 中推荐使用的却是 code first 反正我是很不习惯这种开发模式 于是就搜寻整个微软的官方文档,终于找到了有关.net ...

  7. iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  8. iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储

    使用Core Data进行数据持久化存储   一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成 ...

  9. 四种数据持久化方式(下) :SQLite3 和 Core Data

    在上文,我们介绍了iOS开发中的其中2种数据持久化方式:属性列表.归档解档. 本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文 ...

随机推荐

  1. sprint个人总结+读书博客

    读书感想:    第8章讲了需求分析,在我的日常软件编写中,肯定需要需求分析的,一个没有需求的软件,编写出来也没有什么意义,只能是丢在一个角落里发霉.需求有各种各样,要怎样才能满足客户的需求呢,那就要 ...

  2. Scrum4.0

    1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...

  3. Flex 布局相关用法

    前言: 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 就不容易实现. 2009年,W3C提出了 ...

  4. SQL 批量字符串替换

    --在SQL SERVER中批量替换字符串的方法 update table[表名] set Fields[字段名]=replace(Fields[字段名],'被替换原内容','要替换成的内容') up ...

  5. csharp: Domain-Driven Design(领域驱动设计)

    http://dddsample.sourceforge.net/ https://github.com/citerus/dddsample-core http://dddsamplenet.code ...

  6. csharp: 用Enterprise Library对象实体绑定数据

    Enterprise Library: https://msdn.microsoft.com/en-us/library/ff648951.aspx /// <summary> /// 是 ...

  7. 隐藏android系统标题栏和状态栏

    //隐藏系统title requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏状态栏 getWindow().addFlags(WindowManage ...

  8. springMVC图片文件上传功能的实现

    在工程依赖库下添加文件上传jar包 commons-fileupload-1.2.2.jar commons-io-2.4.jar 2.jsp页面设置form表单属性enctype 在表单中上传图片时 ...

  9. SharpGL学习笔记(十三) 光源例子:环绕二次曲面球体的光源

    这是根据徐明亮<OpenGL游戏编程>书上光灯一节的一个例子改编的. 从这个例子可以学习到二次曲面的参数设置,程序中提供了两个画球的函数,一个是用三角形画出来的,一个是二次曲面构成的. 你 ...

  10. css3属性(一)

    圆角效果: border-radius: 5px 4px 3px 2px; /* 四个半径值分别是左上角.右上角.右下角和左下角,顺时针 */ 阴影: box-shadow:X轴偏移量 Y轴偏移量 [ ...