2014-11-03 27 views
1

我想從我的Objective-C實現文件中引用一些Swift定義的類,但出於某種原因,儘管我已經將頭文件自動生成,它似乎沒有包含有關項目中的Swift類的任何信息。自動生成的「ModuleName-Swift.h」頭不包括Swift類

即使在導入「-Swift.h」文件後,我的Swift類也被歸爲@objc,編譯時仍然出現「使用未聲明的標識符」錯誤。

我找不到我失蹤的東西。我在項目中將Defines Modules設置爲YES。另外值得注意的是:如果我用命令從Obj-C文件中點擊了這個符號,Xcode就成功的在Swift文件中找到了這個定義。

+0

我假設你已經確定與斯威夫特代碼成功打造包含在構建之前試圖引用objc中的swift類? – ccwasden 2014-11-03 22:44:34

+0

@ccwasden是的,如果我沒有引用符號,項目編譯好,包括Swift代碼。 – devios1 2014-11-03 22:51:15

回答

1

確保在建設置你有這種設置:

Objective-C的橋接報:$(SRCROOT)/Sources/SwiftBridging.h

有時當你輸入一個快捷文件直接的Xcode不要提示你添加橋接頭。即使你不迅速地調用objective-c,它也是必須的。

0

您可能需要從NSObject派生。

我遇到了類似的情況,一些Swift類沒有通過自動生成的頭文件暴露給Obj-C。解決的辦法是從NSObject派生Swift類。

class SwiftClassNotInHeader { } 
class SwiftClassInHeader : NSObject { } 

從MyApp的-Swift.h

SWIFT_CLASS("_TtC6Server18SwiftClassInHeader") 
@interface SwiftClassInHeader : NSObject 
- (SWIFT_NULLABILITY(nonnull) instancetype)init OBJC_DESIGNATED_INITIALIZER; 
@end 

SwiftClassNotInHeader不是對myApp-Swift.h