Reputation: 659
I've been creating a project just to mess around with core data to help myself learn it, but I've come to the part of every project where I just simply can't figure this out, here it is- I am trying to create a UIAlert window, that calls the update name function I've written, that a user can enter a new name and hit update, seems easy enough, and I've got the code I need, minus one tiny piece.
I will post my code, but the error I'm getting is "Cannot convert value of type 'String' to expected argument type 'NameObject'", which I understand, my NameObject class is of type NSManagedObject, I just am not sure where I went wrong or what to do.
class NameObject: NSManagedObject {
static let entityName = "Person"
@NSManaged var name: String?}`class NameObject: NSManagedObject {
static let entityName = "Person"
@NSManaged var name: String? }
func updateName(index: Int, newName: NameObject){
//1
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
// 2
peoples[index].name = newName.name
appDelegate.saveContext()
}
It totally works fine, as far as I know.
Here is my code for the UIAlert,
@IBAction func updateNameButton(sender: AnyObject, indexPath: NSIndexPath) {
//customCell().updateNameAlert()
func updateNameAlert(){
let alert = UIAlertController(title: "Update",
message: "Please enter the new name.",
preferredStyle: .Alert)
// 1
let updateAction = UIAlertAction(title: "Save",
style: .Default){(_) in
let nameTextField = alert.textFields![0]
Here is where I am having my issue:
self.updateName(indexPath.row, newName:(nameTextField.text!)) //Issue
self.tableView.reloadData()
}
// 2
let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
alert.addTextFieldWithConfigurationHandler(nil)
alert.addAction(updateAction)
alert.addAction(cancelAction)
// 3
self.presentViewController(alert, animated: true, completion: nil)
}
}
If any further information is wanted let me know; I am glad to provide it if it helps.
Upvotes: 4
Views: 9131
Reputation: 285064
Just change the signature to take a string for parameter newName
,
that's what the error message says.
func updateName(index: Int, newName: String){
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
peoples[index].name = newName
appDelegate.saveContext()
}
Upvotes: 5