//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
版權聲明:本文為博主原創文章,未經博主允許不得轉載。