zoukankan      html  css  js  c++  java
  • 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

     
     
  • 相关阅读:
    GitLabCI系列之流水线语法
    ssh访问控制,阻断异常IP,防止暴力破解
    天翼云主机高可用的两种办法
    kvm命令管理虚拟机
    kvm安装windows使用virtio驱动
    kvm上已安装的虚拟机修改为桥接网络
    监控Redis集群,有两种方法
    vivo 公司 Kubernetes 集群 Ingress 网关实践
    KVM里安装不是原装的winxp系统镜像
    kvm里的虚拟机硬盘和网卡使用virtio驱动
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5943329.html
Copyright © 2011-2022 走看看