web-dev-qa-db-fra.com

Mettre à jour l'objet de données principal Swift 3

Je souhaite mettre à jour un objet de données principal dans Swift 3. Après quelques recherches sur Google, je n'ai rien trouvé sur Swift 3 . Ma question est donc la suivante: comment mettre à jour un objet de données principal dans Swift 3?

10
Roberto Tonini

Essaye ça

        let empId = "001"
        let fetchRequest:NSFetchRequest<NSFetchRequestResult> = NSFetchRequest.init(entityName: "EmpDetails")
        let predicate = NSPredicate(format: "empId = '\(empId)'")
        fetchRequest.predicate = predicate
        do
        {
            let test = try context?.fetch(fetchRequest)
            if test?.count == 1
                        {
                            let objectUpdate = test![0] as! NSManagedObject
                            objectUpdate.setValue("newName", forKey: "name")
                            objectUpdate.setValue("newDepartment", forKey: "department")
                            objectUpdate.setValue("001", forKey: "empID")
                            do{
                                try context?.save()
                            }
                            catch
                            {
                                print(error)
                            }
                        }
        }
        catch
        {
            print(error)
        }
21
RajeshKumar R

Transmettez l'identifiant unique dans la variable "id" (variable unique créée dans le modèle de données Core) et toute la variable à mettre à jour:

func context() ->  NSManagedObjectContext {
    let context=(UIApplication.shared.delegate as!AppDelegate).persistentContainer.viewContext
        return context
}



func save() {
    (UIApplication.shared.delegate as! AppDelegate).saveContext()
}

func UpdateCartByTestId(id:Int64,name:String) {
    let fetchRequest =
            NSFetchRequest<NSManagedObject>(entityName: "Update")
    fetchRequest.returnsObjectsAsFaults = false
    fetchRequest.predicate = NSPredicate(format:"id == %d",id)

    let result = try? context().fetch(fetchRequest)

    if result?.count == 1 {

        let dic = result![0]
        dic.setValue(id, forKey: "id")
        dic.setValue(name, forKey: "name")
        save()
    }
}
0
Sandeep Kalia