【问题标题】:SWIFT: Updating an existing core data objectSWIFT:更新现有核心数据对象
【发布时间】:2016-09-26 03:45:41
【问题描述】:

我一直在创建一个项目,只是为了弄乱核心数据来帮助自己学习它,但我已经到了每个项目的一部分,我根本无法弄清楚这一点,这就是 - 我我正在尝试创建一个 UIAlert 窗口,它调用我编写的更新名称函数,用户可以输入一个新名称并点击更新,看起来很容易,而且我已经有了我需要的代码,减去一小块。

我将发布我的代码,但我得到的错误是 “无法将类型 'String' 的值转换为预期的参数类型 'NameObject'”,据我所知,我的 NameObject 类是NSManagedObject 类型的,我只是不知道我哪里出错了或者该怎么做。

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

}

据我所知,它完全可以正常工作。


这是我的 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]

这是我遇到问题的地方:


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

如果需要任何进一步的信息,请告诉我;如果有帮助,我很乐意提供。

【问题讨论】:

    标签: ios swift cocoa cocoa-touch core-data


    【解决方案1】:

    只需更改签名以获取参数newName的字符串,
    这就是错误消息的内容。

    func updateName(index: Int, newName: String){
       let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
       peoples[index].name = newName
       appDelegate.saveContext()
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 2020-10-29
      相关资源
      最近更新 更多