2017-05-25 6 views
1

Ich versuche, einige Swift-Framework in meinem Objective-C-Projekt zu implementieren. Ich habe bereits alle Bridge-Header eingerichtet und auch @objc vor Funktionen und Klassen in einer schnellen Klasse geschrieben. So ist es erforderlich, die folgenden zu tun, aber das Beispiel-Code wird in Swift gegeben:Zugriff Swift-Funktion für ein Objekt aus Objective-C-Klasse

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

ich diesen Code ausführen müssen in Obj-c-Klasse für ein Objekt Barview. Ich habe versucht, dies zu tun, aber es funktioniert nicht:

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

Was soll ich tun?

EDIT:

Ich habe eine IBOutlet Verbindung:

@property (strong) IBOutlet OGCircularBarView *barView; 

So gibt es ein Objekt mit dem Namen Barview. Ich habe auch einige Swift-Klasse mit dem Code:

import Cocoa 

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

Ich brauche diesen Code auszuführen in einer Objective-C-Klasse (die in Swift gegeben):

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

Wie kann ich es umschreiben damit es in Objective-C funktioniert?

Antwort

1

Versuchen Sie folgendes:

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

Das erste Problem ist, dass Sie nicht die Punktsyntax für Methoden verwenden können; Das sind die Klammern für: [object message:withArguments:...]

Die zweite ist, dass der Name der Swift-Funktion für Obj-C-Übersetzung ein wenig peinlich ist. Wenn Sie die schnelle Funktion wie folgt deklarieren:

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

... würde es ein einfacher zu lesende übersetzt werden:

[_barView addBarBackgroundWithStartAngle: endAngle: ...] 

Ich hoffe, das hilft.

+0

Leider muss ich einen Hintergrund für ein Objekt namens barView hinzufügen. Und dieser Hintergrund hat einige Parameter wie startAngle, endAngle, radius usw. Ich muss der Funktion addBarBackground mitteilen, welche Art von Hintergrund ich brauche. Siehe meine Bearbeitung – dvijok

+0

Y-ja. :-) Darauf antworte ich. Hast Du es versucht? –

+0

Ja! Ich habe nur die Funktion geändert, wie Sie gesagt haben und es funktioniert :) Danke! – dvijok