我有一個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
的實例。這是怎麼回事?