2017-04-14 58 views
0

我想從目標c文件中調用swift函數。從目標c調用swift函數給出鏈接器錯誤

斯威夫特功能實現:

@objc class FXFormVariables : NSObject { 
    class func FXFontName() -> String { return fontName } 
    class func FXFontSize() -> CGFloat { return fontSizeLarge } 
    class func FXHiddenCell() -> NSArray { return hiddenElementFromFormIndex as NSArray } 
} 

目標C:

NSArray *hideArray = [FXFormVariables FXHiddenCell]; 
if ([hideArray containsObject:@(cellIndexPath)]){ 
     return 0.0; 
} 

鏈接錯誤在構建時:

Undefined symbols for architecture x86_64: 
    "_OBJC_CLASS_$__TtCC13Social_Engine11AppDelegate15FXFormVariables", referenced from: 
     objc-class-ref in FXForms.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

此代碼工作正常在Xcode 7.3,但升級後的8.3它開始拋出鏈接器錯誤。

請幫忙。提前致謝。

回答

0

導入文件名爲項目名稱由-Swift.h在Objective-C的文件附加

請檢查例如導入文件的下面

#import 「ProjectName-Swift.h」 

當你建立你的項目的Xcode會生成此文件.swift文件。

另外,還可以從下面的問題檢查: How to import Swift code to Objective-C

+0

我已經包含了該文件。 – Akash

0

就可以得到這種類型的錯誤檢查類是在你目標的「構建階段」選項卡中的「編譯源」步驟中列出。通常Xcode會爲你做這件事,但有時它會丟失情節,你需要手動添加類文件。

要做到這一點:

TargetSettings - >構建階段 - >編譯源代碼 - >添加類-.swift>生成和運行