我正在用Swift语言和方法创建UITableViewController
override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell?
我收到这个错误
NSIndexPath?在Swift中没有成员名称“行”错误
我不明白为什么。
这是我的代码
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 } }
然后,如何使用数组dataStore元素设置cell.text?
您可以使用以下命令解开可选indexPath参数if let...:
indexPath
if let...
if let row = indexPath?.row { cell.textLabel.text = self.dataStore[row] }
或者,如果确定indexPath不是nil,则可以使用以下命令强制展开!:
nil
!
cell.textLabel.text = self.dataStore[indexPath!.row]
请记住,indexPath!在nil值上将是一个运行时异常,因此,最好像在第一个示例中那样将其包装。
indexPath!