2014-09-23 59 views
1

我創建了兩個函數的ObjectiveC,如:斯威夫特無法找到objc功能與參數變量

- (void)showName:(NSString *)name, ...; 
- (void)showTitle:(NSString *)title; 

我可以叫showTitle:在我的SWIFT代碼,但如果通話showName不能編譯:

這裏是我的代碼:

//Objective_C code: 
@interface DemoObject : NSObject 

- (void)showName:(NSString *)name, ...; 
- (void)showTitle:(NSString *)title; 

@end 

@implementation DemoObject 
- (void)showName:(NSString *)name, ... { 
NSLog(@"name=%@", name); 
} 

- (void)showTitle:(NSString *)title { 
[self showName:title, @""]; 
} 
@end 

//Swift Code: 
var obj = DemoObject() 
obj.showTitle(""); 
obj.showName(""); //compile error here 

如何來解決這個問題。因爲我使用了第三個庫,它包含Variable參數函數。

+0

你需要發佈更多的代碼,比如函數的body和swift代碼。 – nestedloop 2014-09-23 07:54:59

+0

@nestedloop我已經添加了詳細的代碼。你能幫助解決它嗎?我認爲這是一個快速的錯誤。 – 2014-09-23 08:51:47

+0

可能的重複http://stackoverflow.com/questions/24195796/how-do-you-call-an-objective-c-variadic-method-from-swift? – mash 2014-10-03 05:23:21

回答

3

Swift不會用可變參數引入C函數或Objective-C方法。任何具有可變參數函數的良好API也具有函數的替代形式,其需要va_list(例如,printf具有vprintf);否則它可以通過逐個添加參數來實現同樣的事情。

+0

我+'編輯了這個,我可以確認它看起來像Swift確實不支持這一點。自動完成甚至不顯示正確的功能簽名,如果你嘗試手動添加額外的參數,那麼應用程序甚至不會編譯。 – asiby 2015-04-09 14:18:42