2017-05-25 11 views
1

Objective-CプロジェクトにSwiftフレームワークを実装しようとしています。私はすでにすべてのブリッジヘッダーを設定していますし、関数やクラスの前に@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]; 

どうすればよいですか?

EDIT:

私は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:...]

第2の点は、Swiftの関数名がObj-Cの翻訳に少し厄介であることです。次のように迅速な関数を宣言した場合:

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

を...読みやすいに変換されます:

[_barView addBarBackgroundWithStartAngle: endAngle: ...] 

私はこのことができます願っています。

+0

残念ながら、barViewという名前のオブジェクトの背景を追加する必要があります。このバックグラウンドには、startAngle、endAngle、radiusなどのパラメータがあります。必要なバックグラウンドのタイプはaddBarBackground関数に伝えなければなりません。私の編集 – dvijok

+0

Y-はいを参照してください。 :-)それは私が答えているものです。それを試しましたか? –

+0

うん!私はちょうどあなたが言ったように機能を変更して、それは動作します:) ありがとう! – dvijok

関連する問題