//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. hdu 5407 CRB and Candies(组合数+最小公倍数+素数表+逆元)2015 Multi-University Training Contest 10

    题意: 输入n,求c(n,0)到c(n,n)的所有组合数的最小公倍数. 输入: 首行输入整数t,表示共有t组测试样例. 每组测试样例包含一个正整数n(1<=n<=1e6). 输出: 输出结 ...

  2. Android 打勾显示输入的密码

    main.xml: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:and ...

  3. hdu1722 bjfu1258 辗转相除法

    这题就是个公式,代码极简单.但我想,真正明白这题原理的人并不多.很多人只是随便网上一搜,找到公式a了就行,其实这样对自己几乎没有提高. 鉴于网上关于这题的解题报告中几乎没有讲解原理的,我就多说几句,也 ...

  4. 【windows核心编程】使用远程线程注入DLL

    前言 该技术是指通过在[目标进程]中创建一个[远程线程]来达到注入的目的. 创建的[远程线程]函数为LoadLibrary, 线程函数的参数为DLL名字, 想要做的工作在DLL中编写.  示意图如下: ...

  5. [apkAnalyzer] 查看APK包名

    最近项目中要用到APK的包名,必应到apkAnalyzer这个软件可以用,下载解压后,看到这么些jar,bat文件不知道怎么用. 参考了这篇文章,看的也不甚明白,最后还是试出来了,这里记录一下. 首先 ...

  6. Spark系列(五)Master主备切换机制

    Spark Master主备切换主要有两种机制,之中是基于文件系统,一种是基于Zookeeper.基于文件系统的主备切换机制需要在Active Master挂掉后手动切换到Standby Master ...

  7. MUSIC算法学习笔记

    MUSIC即多重信号分类. MUSIC算法仅能估计非相干关信源,对相干信源,其性能将随信源间的相 关系数的增加而逐渐降低,直至完全恶化. 阵列信号处理的只要问题包括:波束形成技术,零点形成技术,空间谱 ...

  8. 定位程序问题的方法 -- clwu

    原本的标题的<定位程序代码的方法>,但问题有时候超出了自己代码的范围,而是别人的程序,所以今天想分享的是一个通用的分析问题(程序)的思路. 先来说一下在使用别人的程序(Vim)过程中遇到问 ...

  9. dedecms

    http://www.duodede.com/free/  [free templte] http://www.xiuzhanwang.net/d

  10. 探索ORACLE之ASM概念

    一.     ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的 ...