我有一个ViewController子类,它可以分成多个不同的其他视图(使用单个ViewController类型)。我已经把标识在故事板的塞格斯,我想他们在运行时比较,所以我可以将数据传递给他们,就像这样:无法将NSString与Swift的静态字符串进行比较
class MyListViewController : UITableViewController {
static let segueNameFoo : String = "segueFoo"
static let segueNameBar : String = "segueBar"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
super.prepareForSegue(segue, sender: sender)
if segue.identifier == segueNameFoo {
let vc : MyDetailViewController = segue.destinationViewController as! MyDetailViewController
vc.someData = "foo"
} else if segue.identifier == segueNameBar {
let vc : MyDetailViewController = segue.destinationViewController as! MyDetailViewController
vc.someData = "bar"
}
}
}
问题是,Xcode的7.3给了我这些错误:
静态成员
segueNameFoo
不能类型的实例使用MyListViewController
静态成员segueNameBar
不能类型的实例使用MyListViewController
当我将其更改为let segueNameFoo : String = "segueFoo"
时,它的构建和运行良好。
我不明白为什么它抱怨 - segue.identifier
是NSString*
和Swift支持==
之间的比较。我对static let
的使用使得segueNameFoo
未分配给每个MyListViewController
的实例。这是怎么回事?