Problem with UIPickerView display from firebase

Hi everyone,
I’m having an issue that I have spent 2 days trying to figure out. I have a firebase database set up and one of my “tables” is called ‘AvailableTournaments’. In my viewcontroller I’ve added a pickerview to scroll through the available records in the database. I’m getting an error pickerview:titleForRow method where it doesn’t like me returning an array and get the error ‘Cannot convert return expression of type ‘AvailableTournaments’ to return type ‘String?’’ but I can’t figure it out. Any help would be great. I’ve included my view controller as well as the struct for available tournaments and have uploaded the project named ‘Tournament Fishing’ here:

// AvailableTournaments.swift
// TournamentFishing

// Created by Mike Nelson on 2/27/20.
// Copyright © 2020 CIC Solutions. All rights reserved.
import Foundation

struct AvailableTournaments {

var tournamentId:String?
var tournamentName:String?
var d1StartDate:String?


// RegistrationViewController.swift
// TournamentFishing
// Created by Mike Nelson on 2/18/20.
// Copyright © 2020 CIC Solutions. All rights reserved.

import UIKit
import FirebaseAuth
import FirebaseUI
import FirebaseDatabase

class RegistrationViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {

@IBOutlet weak var tournamentPicker: UIPickerView!

var tournamentData = [AvailableTournaments]()
var dbRef:DatabaseReference?

override func viewDidLoad() {

    // Connect data
    self.tournamentPicker.delegate = self
    self.tournamentPicker.dataSource = self
    dbRef = Database.database().reference()

override func viewDidAppear(_ animated: Bool) {

func readDataOnce() {

/* // Create a firebase auth ui object
let authUI = FUIAuth.defaultAuthUI()

    // Check that it isn't nil
    guard authUI != nil else {

// Get the user
// let user = Auth.auth().currentUser

    dbRef?.child("AvailableTournaments").observeSingleEvent(of: .value, with: { (snapshot:DataSnapshot) in
        let snapshots = snapshot.children.allObjects as! [DataSnapshot]
        for snap in snapshots {
            let tournamentDict = snap.value as! [String:Any]
            let tournamentID = snap.key
            let tournamentName = tournamentDict["tournamentName"] as! String
            let startDate = tournamentDict["d1StartDate"] as! String
            let t = AvailableTournaments(tournamentId: tournamentID, tournamentName: tournamentName, d1StartDate: startDate)

override func didReceiveMemoryWarning() {
    // Dispose of any resources that can be recreated.

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return tournamentData.count

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return tournamentData[row] **<<< GET THE ERROR HERE**

@IBAction func backTapped(_ sender: UIButton) {
    let tabBarVC = self.storyboard?.instantiateViewController(withIdentifier: Constants.Storyboard.mainTabBarController)
    self.view.window?.rootViewController = tabBarVC

@IBAction func continueTapped(_ sender: UIButton) {


I figured it out. I missed the reloading of the pickerview.