5

I am new in core data. i just want to check if a record exists in core data then update else insert. i can insert, fetch delete data but unable to update. Here is my piece of code

var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var user = [Users]()
func insertData() {

    let newUser = NSEntityDescription.insertNewObject(forEntityName: "Users", into: context)//entity(forEntityName: "Users", in: context)
    newUser.setValue("chatt", forKey: "name")
    newUser.setValue("100", forKey: "balance")
    newUser.setValue("123", forKey: "user_id")
    do {

        try context.save()

    } catch {

        print("Failed saving")
    } 
}

Please help me with the update code snippet

Dawid Wysakowicz
  • 3,402
  • 17
  • 33
Gorib Developer
  • 587
  • 2
  • 13
  • 27

1 Answers1

6

try this :

var fetchRequest = NSFetchRequest(entityName: "Users")
fetchRequest.predicate = NSPredicate(format: "userName = %@", userName)

if let fetchResults = appDel.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [NSManagedObject] {
    if fetchResults.count != 0 {
        // update
        var managedObject = fetchResults[0]
        managedObject.setValue(accessToken, forKey: "accessToken")

        context.save(nil)
    } else {
        //insert as new data
    }
}

Cheers :)

Jon Winstanley
  • 23,010
  • 22
  • 73
  • 116
Wendra
  • 507
  • 6
  • 8