1
resposta

Erro no mealsTable!.add

import UIKit

class ViewController: UIViewController {

    @IBOutlet var nameField: UITextField?
    @IBOutlet var happinessField: UITextField?
    var mealsTable : MealsTableViewController?

    @IBAction func add() {
        if(nameField == nil || happinessField == nil){
            return

        let name:String = nameField!.text!

        if let happiness = Int(happinessField!.text!){
            let meal = Meal(name: name, happiness: happiness)

        print("Foi comido um \(meal.name) com a felicidade \(meal.happiness)!")
        }else{
            happinessField?.text = ""
            return
             }
        }

        if(mealsTable == nil) {
            return
        }

        mealsTable!.add(meal: Meal)

        if let navigation = navigationController {
            navigation.navigationController?.popViewController(animated: true)
        }
    }


}

Estou tentando fazer o passado da aula, onde fazemos o método de adicionar uma refeição a lista, porém o meu compilador dá o seguinte erro:

"Cannot convert value of type 'Meal.Type' to expected argument type 'Meal'

Meu Xcode ta na versão 10.2.1 Já tentei deixar só "meal", mas ai ele diz para eu mudar para "Meal" e continua o erro.

1 resposta

A sua consante meal do tipo Meal só existe no dentro do if let onde você realiza apenas a impressão de que foi comido. No lugar aonde você está executando mealsTable!.add(meal: Meal) você está passando o tipo Meal e não uma constante chamada meal (que nesse momento já não existe mais) e é isso que o erro diz: "Não é possível converter valor do tipo Meal.Tipo para o tipo esperado do argumento Meal", você está passando uma coisa do tipo Meal.Tipo para uma função que espera uma coisa do tipo Meal.

Para resolvar garanta que a constante que você quer usar está definida naquele escopo, um jeito de fazer isso é adicionar a instrução mealsTable?.add(meal: meal) após a impresão de que foi comido.