swift3.0 coredata 的使用
//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
版权声明:本文为博主原创文章,未经博主允许不得转载。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2015-10-09 Swift语言Storyboard教程:第一部分
2015-10-09 Swift UI开发初探
2015-10-09 iPhone应用程序开发基础之一: IBOutlet与IBAction
2015-10-09 Swift实战-小QQ(第1章):QQ登录界面
2015-10-09 Swift实战-QQ在线音乐(AppleWatch版)
2015-10-09 iOS苹果官方Demo合集
2015-10-09 Android4.3 蓝牙BLE初步