Swift “错误”;secondViewController没有名为“的成员”;“mastername”;

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

我使用的是IOS 8应用程序开发软件包中的一个示例。我在我的第二个控制器中添加了一个变量,但一直出现这个错误。 第二控制器代码:

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。但是如果不看相关的代码,就很难给出一个正确的答案,除了建议使用downcast
tableData[row]作为?String
-这可能会解决问题,如果不是,我建议创建一个新问题,因为这是一个不同的问题