2017-04-11 21 views
1

我正在用swift開發我的,現在很少的舊文件是用objective-c編寫的。所以我爲班級溝通創造了橋樑。如何將swift文件導入obective-c類,用於班級授權?

我的一個委託類是用Objective-C編寫的,現在我想知道哪個是調用我的委託的當前類。

我在嘗試isKindOfCalss,它的火沒有找到像標識符一樣的錯誤。一旦我將swift文件錯誤更改導入前向聲明。

任何建議我該如何處理這種需求?

另外導入不工作在我的情況下,請參閱附加的圖像。

enter image description here

enter image description here

enter image description here

+0

我使用的Xcode 8.3,我已經在目標文件數等等問題相關的進口迅速類....但不幫助我。 ;( –

+0

isKindOfClass將適用於Swift類,當且僅當它們從默認情況下不會發生的NSObject繼承時 –

+0

HomeVC類是一個快速類..? –

回答

0

以前沒有見過你的問題,但我可以建議你只是重寫這個代碼不isKindOfClass東西。你可以使用一些返回枚舉從基類,然後檢查它,而不是

@objc enum EnumSubstitution: Int { 
    // several options 
} 

protocol YourDelegateProtocol { 
    // your methods 
    var enumSubstitutionForIsKindOf: EnumSubstitution {get} 
} 

我沒有檢查代碼,但是,假設你已經有了這個想法

編輯:

我意思是,你可以在你的代碼在下次使用EnumSubstitution起來,所以不是寫

if ([self.delegate isKindOfClass: [yourClass class]]) 

你只是用

if (self.delegate.enumSubstitutionForIsKindOf == firstOption) 

+0

我已經在objc中設置協議和委託,這是工作正常與swift,現在我想跟蹤哪些是我當前的委託對象。 –

+0

當然,讓我試試這個... –

+0

我的應用程序有多語言支持,只是來了解它不允許我導入我的app-swift.h文件#import「myapp-Swift.h」。可能是這個問題。 –

-1

這裏有包括Objective-C代碼斯威夫特代碼的文檔:

Mix and match

它歸結爲使用這種風格的進口:

#import "ProductModuleName-Swift.h」 

你似乎已經在做什麼。確保你使用了正確的模塊名稱。一個module的定義是:

模塊是代碼分佈框架或應用程序,它是建立和運輸爲單個單元,並可以通過與Swift的進口關鍵字另一個模塊引入的單個單元。

Xcode中的每個構建目標(如應用程序包或框架)都被視爲Swift中的獨立模塊。如果將應用程序代碼的各個方面組合在一起作爲獨立框架(也許是將這些代碼封裝並跨多個應用程序重複使用),那麼您在該框架中定義的所有內容都將在應用程序中導入和使用時成爲單獨模塊的一部分,或者當它在另一個框架內使用時。

如果您仍然有,我建議你在你的項目中的每個模塊上做了full clean and build問題,你可以有一些片被竊聽,不正確加載。

0

從您的答案看起來,您的進口報表缺少Swift中的大寫字母S.

嘗試改變

#import "HomeVC-swift.h" 

#import "HomeVC-Swift.h" 
+0

感謝您的幫助,問題是由於本地化的產品名稱。 –