2017年3月19日 星期日

use CoreData in IOS





新增一個Entity,    然後加入兩個   Attitute...


import CoreData 很重要

import CoreData

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //  存入的動作        
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let context = appDelegate.persistentContainer.viewContext

         // forEntityName -> entity name  
        let newuser = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)

        // forKey  ->  attitute name
        newuser.setValue("Ken", forKey: "username")
        do{
            try context.save()
            print("Save!!")
        }catch{
            print("Could not be saved")
        }
        

        // 取出的動作
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
        request.returnsObjectsAsFaults = false
        do{
            let results =  try context.fetch(request)
            if results.count > 0{
                for result in results as! [NSManagedObject]{
                    if let username = result.value(forKey: "username") as? String{
                        print(username)
                    }
                }
            }
        }catch{
            print("Could not fetch entity")
        }
        
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



}


--------------------------------------------------------

加入  查詢條件

  let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
      request.predicate = NSPredicate(format: "username = %@", "Tommy")
        
        request.returnsObjectsAsFaults = false
        do{
            let results =  try context.fetch(request)
            if results.count > 0{
                for result in results as! [NSManagedObject]{
                    if let username = result.value(forKey: "username") as? String{
                        print(username)
                                  
                        
                    }
                }
            }
        }catch{
            print("Could not fetch entity")
        }



加入修改的動作

  let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
        //request.predicate = NSPredicate(format: "username = %@", "Tommy")
        
        request.returnsObjectsAsFaults = false
        do{
            let results =  try context.fetch(request)
            if results.count > 0{
                for result in results as! [NSManagedObject]{
                    if let username = result.value(forKey: "username") as? String{
                       
               
                        
                        result.setValue("BiBi", forKey: "username")
                        
                        do{
                            try context.save()
                        }catch{
                            print("Save item ")
                        }
                        
                        
                    }
                }
            }
        }catch{
            print("Could not fetch entity")
        }


刪除資料

也是套用

查詢的條件 加上  context.delete(MsManageObject) 和 context.save()  


  let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
        request.predicate = NSPredicate(format: "username = %@", "Tommy")
        
        request.returnsObjectsAsFaults = false
        do{
            let results =  try context.fetch(request)
            if results.count > 0{
                for result in results as! [NSManagedObject]{
                    if let username = result.value(forKey: "username") as? String{
                        context.delete(result)
                        //print(username)
               
                        
                        //result.setValue("BiBi", forKey: "username")
                        
                        do{
                            try context.save()
                        }catch{
                            print("Save item ")
                        }
                        
                        
                    }
                }
            }
        }catch{
            print("Could not fetch entity")
        }







沒有留言:

張貼留言