Swift错误:类型的值' NSObject - > ()' AnimalListTableViewController'没有会员' tableView'

时间:2016-02-26 21:12:52

标签: ios xcode swift

我试图摆脱swift xcode中的这些错误

Value of type 'NSObject -> () -> AnimalListTableViewController' has no member 'tableView' / Consecutive declarations on a line must be separated by ';' / Variable used within its own initial value

如果屏幕截图太小,则代码为

import UIKit

class AnimalListTableViewController: UITableViewController
{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }
    let indexPath = self.tableView.indexPathForSelectedRow()//this is where the error appears, it says  Value of type 'NSObject -> () -> AnimalListTableViewController' has no member 'tableView'
    override func prepareForSegue(segue: UIStoryboardSegue,
        sender: AnyObject?)
    {
            if let DetailViewController =
                segue.destinationViewController
                    as? DetailViewController {
            }
    }

    if let indexPath = self.tableView.indexPathForSelectedRow()
    {
        DetailViewController.Animal = animals[indexPath.row]
    }
}

1 个答案:

答案 0 :(得分:1)

代码格式不正确。

在生成错误的行中,您正在AnimalListTableViewController class声明的上下文中工作,而不是在函数内。从左到右阅读时,就好像您正在尝试声明indexPath类的常量数据成员AnimalListTableViewController

看起来你正试图这样做:

class AnimalListTableViewController: UITableViewController
{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }

    override func prepareForSegue(segue: UIStoryboardSegue,
        sender: AnyObject?)
    {
        if let detailViewController = segue.destinationViewController as? DetailViewController, let indexPath = self.tableView.indexPathForSelectedRow {
            detailViewController.Animal = animals[indexPath.row]
        }
    }
}

也清理了其他一些事情:

  • 也不要使用类名(DetailViewController)作为变量名。已将其更改为detailViewController
  • if let语句折叠为单个语句。清洁器;避免选择。