2017-05-25 75 views
1

我試圖在我的Objective-C項目中實現一些Swift框架。我已經設置了所有Bridge-Header,並且在函數和類中以快速類編寫了@objc。因此它需要做到以下幾點,但示例代碼中斯威夫特給出:訪問Objective-C類中的對象的Swift函數

barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15) 

我不得不爲對象barView執行的OBJ-C類的代碼。我試圖做到這一點,但它不起作用:

[_barView.addBarBackground startAngle: 90 endAngle: -270 radius: 100 width: 15]; 

我該怎麼辦?

編輯:

我有一個IBOutlet中連接:

@property (strong) IBOutlet OGCircularBarView *barView; 

所以,有一個名爲barView的對象。我也有一些斯威夫特 - 類代碼:

import Cocoa 

@objc public class OGCircularBarView: NSView, Sequence { 
    //... 
    @objc public func addBarBackground(startAngle: CGFloat, endAngle: CGFloat, radius: CGFloat, width: CGFloat, color: NSColor) { 
     //some code 
    } 
    //... 
} 

我需要執行的代碼在Objective-C類(在斯威夫特給出):

barView.addBarBackground(startAngle: 90, endAngle: -270, radius: 100, width: 15) 

我怎樣才能把它改寫以便它在Objective-C中工作?

回答

1

試試這個:

[_barView addBarBackgroundStartAngle: 90 endAngle: -270 radius: 100 width: 15]; 

第一個問題是你不能使用點語法的方法;這是括號是什麼:[object message:withArguments:...]

第二個是Swift函數的名稱是Obj-C翻譯有點尷尬。如果你聲明的迅猛功能如下:

func addBarBackgroundWithStartAngle(_ startAngle: Type, endAngle: Type... 

...這將被轉換爲更容易閱讀:

[_barView addBarBackgroundWithStartAngle: endAngle: ...] 

我希望這有助於。

+0

不幸的是,我必須爲名爲barView的對象添加一個背景。這個背景有一些參數,如startAngle,endAngle,radius等。我必須告訴函數addBarBackground,我需要什麼類型的背景。看到我的編輯 – dvijok

+0

Y-是的。 :-)這就是我正在回答的。你試過了嗎? –

+0

是啊!我只是改變了你所說的功能,它的工作原理:) 謝謝! – dvijok