Swift “错误”;secondViewController没有名为“的成员”;“mastername”;
我使用的是IOS 8应用程序开发软件包中的一个示例。我在我的第二个控制器中添加了一个变量,但一直出现这个错误。 第二控制器代码:Swift “错误”;secondViewController没有名为“的成员”;“mastername”;,swift,tableview,segue,Swift,Tableview,Segue,我使用的是IOS 8应用程序开发软件包中的一个示例。我在我的第二个控制器中添加了一个变量,但一直出现这个错误。 第二控制器代码: Class SocondDetailController: UIViewController{ var mastername: String? ... } override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) { if segue.identifier == "S
Class SocondDetailController: UIViewController{
var mastername: String?
...
}
override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?)
{
if segue.identifier == "ShowDetails"
{
let detailViewController = segue.destinationViewController as SocondDetailController
let myIndexPath = self.tableView.indexPathForSelectedRow()
let row = myIndexPath?.row
SocondDetailController.mastername = tableData[row!]
}
}
第一控制器代码:
Class SocondDetailController: UIViewController{
var mastername: String?
...
}
override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?)
{
if segue.identifier == "ShowDetails"
{
let detailViewController = segue.destinationViewController as SocondDetailController
let myIndexPath = self.tableView.indexPathForSelectedRow()
let row = myIndexPath?.row
SocondDetailController.mastername = tableData[row!]
}
}
我是Swift和IOS开发的新手。刚从71岁开始。
我已经使用VB.Net很长时间了
请帮忙。
谢谢。这一排:
SocondDetailController.mastername = tableData[row!]
应该是:
detailViewController.mastername = tableData[row!]
mastername
是一个实例属性,因此您必须通过SocondDetailController
的实例来访问它,而不是通过SocondDetailController
类型本身
另外,尽管由于视图控制器中的逻辑可能不需要,但我还是避免使用强制展开操作符代码>,首选更安全的可选绑定:
let row = myIndexPath?.row
if let row = row {
detailViewController.mastername = tableData[row]
}
或者,更简洁地说:
if let row = myIndexPath?.row {
detailViewController.mastername = tableData[row]
}
我按照您的建议将第二个DetailController替换为detailViewController。现在错误是“anyObject不可转换为String”。我假设tableData
被定义为anyObject
的数组-是否正确?我应该指出我正在尝试将文本从第一个tableView的一个单元格传递到第二个单元格。谢谢你的帮助,你是对的。它来自已转换的JSON数据。Ok。但是如果不看相关的代码,就很难给出一个正确的答案,除了建议使用downcasttableData[row]作为?String
-这可能会解决问题,如果不是,我建议创建一个新问题,因为这是一个不同的问题