//swift3.0在语法上有很大的改变,以简单的增删改查为例,如下:

//User类如下:

import Foundation

import CoreData

extension User {

@nonobjc public class func fetchRequest() -> NSFetchRequest<User> {

return NSFetchRequest<User>(entityName: "User");

}

@NSManaged public var address: String?

@NSManaged public var email: String?

@NSManaged public var headImg: NSData?

@NSManaged public var isLeave: Bool

@NSManaged public var name: String?

@NSManaged public var tel: String?

@NSManaged public var birthDay: String?

}

//CoreDataTools 类如下:该类用于操作coredata

import UIKit

class CoreDataTools: NSObject {

}

///CoreData操作

let EntityName = "User"

//增

func addCoreData()

{

let entity =
NSEntityDescription.insertNewObject(forEntityName:
EntityName, into:
appDelegate.managedObjectContext)
as!
User

entity.name = "周杰伦"

entity.tel ="123456789952"

do

{

try
appDelegate.managedObjectContext.save()

print("添加成功 ~ ~ ")

}catch

{

print("添加失败!!")

}

}

//删

func deleteCoreData(ConditionDic conditionDic:NSMutableDictionary)

{

let request:NSFetchRequest<NSFetchRequestResult>
= NSFetchRequest(entityName:
EntityName)

let condition = "name='周杰伦'"

let predicate =
NSPredicate(format: condition,
"")

request.predicate = predicate

do{

//查询满足条件的联系人

let resultsList =
try appDelegate.managedObjectContext.fetch(request)
as! [User]
as NSArray

if resultsList.count !=
0 {//若结果为多条,则只删除第一条,可根据你的需要做改动

appDelegate.managedObjectContext.delete(resultsList[0]
as! NSManagedObject)

try
appDelegate.managedObjectContext.save()

print("delete success ~ ~")

}else{

print("删除失败!
没有符合条件的联系人!")

}

}catch{

print("delete fail !")

}

}

//改

func updateDataWithCoreData(Model userModel:UserModel, Where condiArray:NSArray)

{

let request:NSFetchRequest<NSFetchRequestResult>
= NSFetchRequest(entityName:
EntityName)

let entity:NSEntityDescription =
NSEntityDescription.entity(forEntityName:
EntityName, in: appDelegate.managedObjectContext)!

let condition =
"name='周杰伦'"

let predicate =
NSPredicate(format: condition,"")

request.entity = entity

request.predicate = predicate

do{

let userList =
try appDelegate.managedObjectContext.fetch(request)
as! [User]
as NSArray

if userList.count !=
0 {

let user = userList[0]
as! User

user.name = "小公举"

try
appDelegate.managedObjectContext.save()

print("修改成功 ~
~")

}else{

print("修改失败,没有符合条件的联系人!")

}

}catch{

print("修改失败 ~ ~")

}

}

//查

func selectDataFromCoreData() ->
NSArray

{

var dataSource =
NSArray()

let request :
NSFetchRequest<NSFetchRequestResult> =
NSFetchRequest()

let entity:NSEntityDescription? =
NSEntityDescription.entity(forEntityName:
EntityName, in: appDelegate.managedObjectContext)

request.entity = entity

do{

dataSource = try
appDelegate.managedObjectContext.fetch(request)
as! [User]
as NSArray

print("数据读取成功 ~ ~")

}catch{

print("get_coredata_fail!")

}

return
dataSource

}

//查询所有数据并输出

func printAllDataWithCoreData()

{

let array =
getDataFromCoreData()

for item
in array {

let user = item
as! User

print("name=",user.name,"tel=",user.tel,"email=",user.email,"address=",user.address)

}

}

//注:appDelegate.managedObjectContext
为定义的全局变量,在Appdelegateclass范围外定义如下:

//let application = UIApplication.shared

//let appDelegate = application.delegate as! AppDelegate

 
 

版权声明:本文为博主原创文章,未经博主允许不得转载。

swift3.0 coredata 的使用的更多相关文章

  1. swift3.0 coreData的使用-日记本demo

    效果 需求分析 基于官方MasterDetail模板,官方写了很多复杂的coredata逻辑,在此基础上快速开发简单的日记本程序. - 主要功能:增.删.改.查 - 界面用默认的界面,将detail页 ...

  2. swift3.0:CoreData的使用

    一.介绍 CoreData不像slqite3那样编写代码繁琐,同时避免了使用了SQL语句的麻烦,也可以回避使用C语言的语法,降低了iOS开发的技术门槛. CoreData可降低开发成本,提高代码质量. ...

  3. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  4. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  5. Swift3.0变化分享

    Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...

  6. swift3.0变化总结

    Swift 3.0 做出的改变很大,在这篇文章中,我将尽我所能,利用代码样例给大家解释Swift 3.0最重要(要命)的改变,希望大家能够做好升级Swift 3.0 的准备.Swift 3.0的改变不 ...

  7. 关于for循环------swift3.0

    在程序开发当中,for循环使用的频率无疑是最高的.常用的swift循环是递增式遍历.当然各种循环,swift都能办到.但其大多采用关键字形式实现,大部分开发者更喜欢直接使用C式循环代码.在swift3 ...

  8. Swift2.3 --> Swift3.0 的变化

    Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...

  9. Swift3.0都有哪些变化

    从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行.在W ...

随机推荐

  1. POJ 1401 Factorial

    题意:求一个数的阶乘最后边有几个0. 解法:如果有0说明这个数含有2和5这两个因子,对于一个阶乘来说因子2的数量一定比5的数量多,所以只要算有几个5就可以了,依次算5的个数,25的个数,125的个数… ...

  2. hdu 4081 Qin Shi Huang's National Road System(最小生成树+dp)2011 Asia Beijing Regional Contest

    同样是看别人题解才明白的 题目大意—— 话说秦始皇统一六国之后,打算修路.他要用n-1条路,将n个城市连接起来,并且使这n-1条路的距离之和最短.最小生成树是不是?不对,还有呢.接着,一个自称徐福的游 ...

  3. 【剑指offer 面试题14】调整数组顺序使奇数位于偶数前面

    思路: 头尾指针,向中间遍历,依据条件交换元素. #include <iostream> using namespace std; void reOrder(int *pData, uns ...

  4. 在PC上测试移动端网站和模拟手机浏览器的5大方法

    在PC上测试移动端网站和模拟手机浏览器的5大方法 来源:互联网 作者:佚名 时间:03-19 10:14:54 [大 中 小]                最近公司要开发网站的移动版,让我准备准备知 ...

  5. cocos2d-x 详解之 CCLayer(触摸事件)

    CCLayer继承自CCNode,在CCLayer中可以实现单点触摸.多点触摸和重力感应回调3种不同形式的交互.这部分的难点在于,当存在多个层都要去接收触摸时它的响应机制是如何处理的.了解内部的处理机 ...

  6. Linux学习笔记:CentOS安装MySQL

    [1]安装版本: 1.1 CentOS-7-x86_64-Everything-1503-01    1.2 MySQL-5.6.27-1.linux_glibc2.5.x86_64.rpm-bund ...

  7. [Hive - LanguageManual] Sampling

    Sampling Syntax Sampling Bucketized Table Block Sampling Sampling Syntax  抽样语法 Sampling Bucketized T ...

  8. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇:简介及目录》(附上完整工程文件)

    跑酷游戏制作 游戏类型: 此游戏Demo,为跑酷类游戏. 框架简介: 游戏通常由程序代码和资源组成.如果说模型.贴图.声音之类的可以给游戏环境提供一个物理描述和设置,那么脚本和代码块会给游戏赋予生命, ...

  9. 【Hadoop代码笔记】Hadoop作业提交之TaskTracker 启动task

    一.概要描述 在上篇博文描述了TaskTracker从Jobtracker如何从JobTracker获取到要执行的Task.在从JobTracker获取到LaunchTaskAction后,执行add ...

  10. 实现 Web 后端和客户端之间的分布式和认证通讯

    stack.io 是一个用于实现 Web 后端和客户端之间的分布式和认证通讯. 服务器端进程之间的通讯是非常高效的,因为没有中间的代理.而来自客户端的请求通过 socket.io 进入 Node.js ...