无法检查参考函数的相等性;这里的操作数有类型'UIBarButtonItem'和'(UIBarButtonItem) - > ()'

时间:2017-05-04 09:54:17

标签: ios swift swift3 uiviewcontroller iboutlet

我正在尝试this Apple tutorial,但我发现了一个错误。有人能帮我吗?

  

当用户未输入项目名称时禁用保存

     

如果用户试图保存没有名字的餐,会发生什么?因为MealViewController上的meal属性是可选的,如果没有名称,您将初始化程序设置为失败,Meal对象不会被创建并添加到膳食列表中 - 这是您期望发生的。但是,您可以更进一步,让用户在输入餐饮名称时禁用“保存”按钮,并在让他们关闭键盘之前检查他们是否指定了有效名称,以防止用户意外添加没有名字的餐点

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    super.prepare(for: segue, sender: sender)

    // Configure the destination view controller only when the save button is pressed.
    guard let button = sender as? UIBarButtonItem, button === saveButton else {
        if #available(iOS 10.0, *) {
            os_log("The save button was not pressed, cancelling", log: OSLog.default, type: .debug)
        } else {
            // Fallback on earlier versions.
        }
        return
    }

    let name = nameTextField.text ?? ""
    let photo = photoImageView.image
    let rating = ratingControl.rating

    // Set the meal to be passed to MealTableViewController after the unwind segue.
    meal = Meal(name: name, photo: photo, rating: rating)
}

1 个答案:

答案 0 :(得分:1)

您可能对saveButton属性声明有疑问。它应该输入UIBarButtonItem(而不是(UIBarButtonItem) -> Void,因为您的错误显示)。

为安全起见,请尝试重复Apple教程中的将“保存”按钮连接到MealViewController代码步骤。