4

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? }

Here is my update function

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.

0

1 Answer 1

5

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()

}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.