2014-11-08 64 views
11

我在一個Swift文件中定義了一個var,但在另一個Objective-C文件中,當我嘗試設置此var時,編譯器抱怨找不到該var。我該如何解決這個問題?這裏是代碼: 在SWIFT:Objc代碼找不到在Swift中定義的Bool變量

var isCreating: Bool! 

在objc:

SelectMemberViewController *ctrl = [[SelectMemberViewController alloc]init]; 
ctrl.isCreating = YES 

那麼編譯器是抱怨:房產 'isCreating' 上鍵入 'SelectMemberViewController'

+0

它在框架中嗎?你有沒有在課堂上測試其他功能?如果它在框架中,則需要將其聲明爲公共。 – 2014-11-08 03:05:16

+0

太模糊。在Swift中顯示實際的聲明,Objective-C文件中的實際調用以及實際的編譯器消息。 – matt 2014-11-08 03:35:46

+0

@chrisco我從不聲明任何「公共」類型的東西,看起來swift類中的變量或vals是默認可訪問的,只要你持有該對象,對嗎? – harthoo 2014-11-08 03:55:35

回答

20

該對象未找到問題在於Objective-C的世界中沒有任何東西對應於Bool!。因此,這個聲明不會暴露給Objective-C。如果您希望Objective-C能夠看到它,您需要聲明一個普通的Bool

+0

是的,它解決了這個問題,謝謝,是因爲objc中的Bool是一個原語,所以它不對應任何可選類型? – harthoo 2014-11-08 05:45:59

+0

是的。或者從Swift的術語來看,它不是一個AnyObject,只有一個AnyObject可以在ObjectiveC(一個id)中爲零。 – matt 2014-11-08 05:49:39

+4

var isCreating:Bool = false。首次初始化是修復它。 – lee 2015-11-02 07:56:12

相關問題