Since batchupdate is more useful in larger chunks of data, I think this is a more subtle approach.
func saveLoginData(accessToken: String, userName: String) {
var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context: NSManagedObjectContext = appDel.managedObjectContext!
var fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "LoginData")
fetchRequest.predicate = NSPredicate(format: "userName = %@", userName)
if let fetchResults = appDel.managedObjectContext!.executeFetchRequest(fetchRequest, error: nil) as? [NSManagedObject] {
if fetchResults.count != 0{
var managedObject = fetchResults[0]
managedObject.setValue(accessToken, forKey: "accessToken")
context.save(nil)
}
}
}
I tried to translate it a bit to your situation if I’m not mistaken, but have not tested it.
fetchRequest.predicate
basically sets the filter on the attribute userName
from the entity LoginData
, with the (user)name you enter when calling the function. Assuming in this example you have only one username
with the same name. Then it does a fetchrequest
with the given filter, so you can change it’s value with setValue
with the accesToken
you also enter when calling the function. The code after: if fetchResults.count != 0
, only executes when the username
exists.