NSIndexPath? does not have a member name 'row' error in Swift

ios, swift, uitableview

Solution

You can either unwrap the optional `indexPath` parameter with `if let...`:

if let row = indexPath?.row {
    cell.textLabel.text = self.dataStore[row]
}

or if you're sure `indexPath` isn't `nil`, you can force the unwrapping with `!`:

cell.textLabel.text = self.dataStore[indexPath!.row]

Just keep in mind that `indexPath!` on a nil value will be a runtime exception, so it's better practice to unwrap it as in the first example.

Problem

I'm creating a UITableViewController with Swift language and in a method ``` override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? ``` I'm getting this error NSIndexPath? does not have a member name 'row' error in Swift and I don't understand why. This is my code ``` import UIKit class DPBPlainTableViewController: UITableViewController { var dataStore: NSArray = NSArray() override func viewDidLoad() { super.viewDidLoad() self.dataStore = ["one","two","three"] println(self.dataStore) } // #pragma mark - Table view data source override func numberOfSectionsInTableView(tableView: UITableView?) -> Int { // Return the number of sections. return 1 } override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int { // Return the number of rows in the section. return self.dataStore.count } override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? { let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell") cell.textLabel.text = self.dataStore[indexPath.row] return cell } } ``` Then, how can set the cell.text with the array dataStore element?

Original source