我一直在尝试学习UITableViewControllers的方法,我遇到了一个错误。这是我的代码的相关部分:
class celly : UITableViewCell {
var name : String = ""
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println(String((tableView.cellForRowAtIndexPath(indexPath.row) as! celly).name))
}
这是倒数第二行(println(...)
)的错误。这不是真正的错误......我想:[)
Cannot find initializer for type 'String' that accepts an argument list of type '(String)'
有人知道为什么我的线路无效吗?
提前多多感谢。非常感谢任何帮助!
答案 0 :(得分:1)
错误使用错误row
。方法tableView:cellForRowAtIndexPath:
正在接受NSIndexPath
,因此您必须使用indexPath
而不是indexPath.row
来调用它。
println(String((tableView.cellForRowAtIndexPath(indexPath) as! celly).name))
要轻松发现类似的错误,您可以考虑将语句解构为简单且可读的错误:
解构:
let cell = tableView.cellForRowAtIndexPath(indexPath) as! celly
let name = cell.name
println(name)
错误消息是一个错误,我会考虑报告。
答案 1 :(得分:0)
tableView.cellForRowAtIndexPath(indexPath.row)
会抛出错误。原因是cellForRowAtIndexPath()
采用NSIndexPath
的参数列表,而不是Int
。使用indexPath.row
,您将返回Int
而不是必需的NSIndexPath
。要解决此问题,只需删除.row
:
println((tableView.cellForRowAtIndexPath(indexPath) as! celly).name)
你应该可以运行它。