Cannot convert return expression of type 'Sweet' to return type 'String?'

hi, I am trying to use my array from Firebase in a pickerView but it's not having it as the array aparantly is not a string?! if I was to use the VAR food in my pickerView functions then it works I get the error: Cannot convert return expression of type 'Sweet' to return type 'String?'


import UIKit
import FirebaseDatabase
import FirebaseAuth


class categoriesViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
    @available(iOS 2.0, *)
    public func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }


    @IBOutlet var label: UILabel!
    @IBOutlet weak var picker: UIPickerView!
    var dbRef:FIRDatabaseReference!
    var sweets = [Sweet]()
    var food = ["hello","world","this is john"]
    override func viewDidLoad() {
        super.viewDidLoad()


        dbRef = FIRDatabase.database().reference().child("sweet-items")
        startObservingDB()
        // Do any additional setup after loading the view.
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
   
    func startObservingDB(){
       
        dbRef.observe(FIRDataEventType.value, with: { (snapshot:FIRDataSnapshot) in
            var newSweets = [Sweet]()
           
           
            for sweet in snapshot.children.allObjects{
                let sweetObject = Sweet(snapshot: sweet as! FIRDataSnapshot)
                newSweets.append(sweetObject)
            }
            self.picker.delegate = self
            self.picker.dataSource = self
           
            self.sweets = newSweets
           
        })
       
    }
   
    // The number of columns of data
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 1
    }
   
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return sweets[row]
       
    }
    // The number of rows of data
  
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return sweets.count
    }
   
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        label.text = sweets[row]
    }


}

Where is the line causing the error?

I suppose the error regards the method you've written as:


func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return sweets[row]
}



sweets is an array of Sweet, so the method needs to create or get a String from the Sweet instance that's in sweets[row], and return the String. If Sweet has a String property such as name or description, then write something like:


func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return sweets[row].name
}
Cannot convert return expression of type 'Sweet' to return type 'String?'
 
 
Q