2016-02-26 44 views
3

我試圖在迅速的Xcode斯威夫特錯誤:類型的值「NSObject的 - >()‘AnimalListTableViewController’沒有成員‘的tableView’

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

該代碼格式不正確。

在生成錯誤的行處,您正在聲明的上下文中工作,而不是在函數中。當從左向右閱讀時,就好像您試圖聲明AnimalListTableViewController類的常數數據成員indexPath

它看起來像你試圖做到這一點:

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語句摺疊爲單個語句。清潔器;避免可選項。
相關問題