NSIndexPath在swift中没有名为row的成员



我有这个代码:

class ViewController: UITableViewController {
    var myArr = [(id:1, name:"1123", description:"d1", image:"palm-tree.png"), (id:2, name:"23", description:"d2", image:"palm-tree.png"),
                (id:3, name:"3", description:"d3", image:"palm-tree.png"), (id:4, name:"4", description:"d4", image:"palm-tree.png")]
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showDetail" {
            var indexPath = tableView.indexPathForSelectedRow()
            let destinationViewController:DetailViewController = segue.destinationViewController as DetailViewController
            destinationViewController.myArr = myArr[indexPath.row]
        }
    }
}

我有一个错误NSIndexPath没有名为row的成员。如何解决?

谢谢!

更新:

class ViewController: UITableViewController {
    struct Item {
        let id: Int
        let name: String
        let description: String
        let image: String
    }
    var myArr = [Item(id:1, name:"1123", description:"d1", image:"palm-tree.png"),
        Item(id:2, name:"23", description:"d2", image:"palm-tree.png"),
        Item(id:3, name:"3", description:"d3", image:"palm-tree.png"),
        Item(id:4, name:"4", description:"d4", image:"palm-tree.png")]
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showDetail" {
            if let indexPath = tableView.indexPathForSelectedRow() {
                let destinationViewController = segue.destinationViewController as DetailViewController
                destinationViewController.myArr = [myArr[indexPath.row]]
            }
        }
    }
}

DetailViewController:

class DetailViewController: UIViewController {
    struct Item {
        let id: Int
        let name: String
        let description: String
        let image: String
    }
    var myArr = [Item(id:1, name:"1123", description:"d1", image:"palm-tree.png")]
}

tableView.indexPathForSelectedRow()返回一个可选的NSIndexPath——您需要打开它才能访问row属性:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showDetail" {
        if let indexPath = tableView.indexPathForSelectedRow() {
            let destinationViewController = segue.destinationViewController as DetailViewController
            destinationViewController.myArr = [myArr[indexPath.row]]
        }
    }
}

最新更新