IOS資料處理及版本特性-CoreData的增刪改查
阿新 • • 發佈:2018-11-22
// // ViewController.swift // Dome2test // // Created by 郭文亮 on 2018/11/21. // Copyright © 2018年 finalliang. All rights reserved. // import UIKit //引入持久化框架 import CoreData class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() test1() print("----------------------------") print("----------------------------") test2() print("----------------------------") print("----------------------------") test3() print("----------------------------") print("----------------------------") test4() } //產出資料 func test4() { //獲得當前程式的應用代理 let appdelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate //通過應用代理物件。獲得管理物件上下文 let managedobjectCOntext = appdelegate.persistentContainer.viewContext //通過管理物件上下文獲得一條實體物件 let newUser = NSEntityDescription.entity(forEntityName: "User", in: managedobjectCOntext) //建立一個數據提取請求物件 let request:NSFetchRequest = NSFetchRequest<User>(entityName: "User") request.fetchOffset = 0 request.fetchLimit = 10 request.entity = newUser do { //執行管理物件上下文的資料提取操作 將提取結果存入陣列 let results:[AnyObject]? = try managedobjectCOntext.fetch(request) for user:User in results as![User] { managedobjectCOntext.delete(user) print("刪除") } try managedobjectCOntext.save() let results2:[AnyObject]? = try managedobjectCOntext.fetch(request) for user:User in results2 as![User] { print("userName=\(user.userName!)") print("password=\(user.password!)") } } catch { print("刪除失敗.") } } //修改編輯資料 func test3() { //獲得當前程式的應用代理 let appdelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate //通過應用代理物件。獲得管理物件上下文 let managedobjectCOntext = appdelegate.persistentContainer.viewContext //通過管理物件上下文獲得一條實體物件 let newUser = NSEntityDescription.entity(forEntityName: "User", in: managedobjectCOntext) //建立一個數據提取請求物件 let request:NSFetchRequest = NSFetchRequest<User>(entityName: "User") request.fetchOffset = 0 request.fetchLimit = 10 request.entity = newUser do { //執行管理物件上下文的資料提取操作 將提取結果存入陣列 let results:[AnyObject]? = try managedobjectCOntext.fetch(request) for user:User in results as![User] { user.userName = "guoguoguo" } try managedobjectCOntext.save() let results2:[AnyObject]? = try managedobjectCOntext.fetch(request) for user:User in results2 as![User] { print("userName=\(user.userName!)") print("password=\(user.password!)") } } catch { print("failed to modify data.") } } //查詢資料 func test2() { //獲得當前程式的應用代理 let appdelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate //通過應用代理物件。獲得管理物件上下文 let managedobjectCOntext = appdelegate.persistentContainer.viewContext //通過管理物件上下文獲得一條實體資料 let newUser = NSEntityDescription.entity(forEntityName: "User", in: managedobjectCOntext) //建立一個數據提取請求物件 let request = NSFetchRequest<User>(entityName: "User") //設定提取資料的偏移值 request.fetchOffset = 0 //設定提取資料的數量 request.fetchLimit = 10 //設定需要提取資料的實體物件 request.entity = newUser //建立一個謂詞物件 設定提取資料的查詢條件 // let predicate = NSPredicate(format: "userName= 'john' ", "") // let predicate = NSPredicate(format: "", "") //設定資料提取請求物件的謂詞屬性 // request.predicate = predicate //查詢 do { //資料提取。把結果存在陣列中 let items = try managedobjectCOntext.fetch(request) for user:User in items { print("userName=\(user.userName!)") print("password=\(user.password!)") } } catch { print("獲取資料失敗") } } //插入資料 func test1() { //獲得當前程式的應用代理 let appdelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate //通過應用代理物件。獲得管理物件上下文 let managedobjectCOntext = appdelegate.persistentContainer.viewContext //通過管理物件上下文插入一條實體資料 let newUser = NSEntityDescription.insertNewObject(forEntityName: "User", into: managedobjectCOntext) as! User newUser.userName = "john" newUser.password = "111" do { try managedobjectCOntext.save() print("儲存成功") } catch { print("儲存失敗") } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }