Question: I am populating a UITableView with the following code in swift. Unfortunately it is show a blank tableview not sure what I am doing wrong.

```
class MasterTableViewController: UITableViewController
{

    var cities: [City]?

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        let london = City(name: "London", coordinates: (51.50722, -0.12750))
        let melbourne = City(name: "Melbourne", coordinates: (-37.8136, 144.9631))
        let singapore = City(name: "Singapore", coordinates: (-23.5475000,-46.6361100))
        let saopaulo = City(name: "Sao Paulo", coordinates: (49.3297,8.57428))
        let nurbergring = City(name: "Nurbergring", coordinates: (45.58005,9.27246))
        cities?.append(london)
        cities?.append(melbourne)
        cities?.append(singapore)
        cities?.append(saopaulo)
        cities?.append(nurbergring)
        // Do any additional setup after loading the view, typically from a nib.

    }

```

Answer: 
```
var cities: [City]?

```

This line means that you declare `cities` as optional array, that is, it can be `nil` value. Because `cities` is only declared and not initialized at this point, its value is `nil`.

After that, in `viewDidLoad`, you create an `City` object and try to add it to `cities` array, but it will not be added, because `cities` has a `nil` value. You need initialize it first:

```
override func viewDidLoad()
{
    super.viewDidLoad()
    cities = [] // initialize as an empty array
    let london = City(name: "London", coordinates: (51.50722, -0.12750))
    // ...
    cities?.append(london)
    // ...
}

```
Have you checked that the cell reuse identifier is correctly named on the storyboard?