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

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM