2016-06-23 1 views
1

ich eine Klassenmethode in Swift haben:ein Anruf Objective-C, um ein Verfahren unter Verwendung Swift String

import Foundation 

public class MyClass : NSObject{ 
    class func registerDevice(userId uId: String, deviceId dId: String, pushServiceToken token: String) -> Void{ /*...*? } 
} 

ich dann diese Funktion aus Objective-C zu nennen versuchen, aber ich bin Borking etwas. Hier ist, was ich versuche:

[MyClass registerDevice: @"user id" deviceId: [UIDevice currentDevice].identifierForVendor.UUIDString pushServiceToken: registrationToken]; 

... aber ich bin immer die Fehlermeldung:

"No known class method for selector 'registerDevice::deviceId:pushServiceToken:'"

Was ist der richtige Weg, um diesen Anruf zu machen?

+1

Nein, es ist, weil Sie den falschen Selektor verwenden. Dies ist der "Methodenname", unabhängig von seinen Parametertypen. Wahrscheinlich müssen Sie 'UserId' nach' registerDevice' hinzufügen. –

Antwort

1

Sie können herausfinden, wie Xcode die Swift-Signatur in Objective-C übersetzt, indem Sie die automatisch generierte Datei <module>-Swift.h überprüfen. <module> ist der Name der App, wenn Sie kein Modul definiert haben (und/oder kein Framework erstellen).

Um die Datei zu finden (sie erscheint nicht in Ihren Projektquellen), drücken Sie cmd-shift-O und geben Sie -Swift.h ein.

EDIT: In diesem Fall wurde die Methode "RegisterDeviceWithUserId" benannt.

+0

Tolle Antwort, nicht nur um mich in die richtige Richtung zu weisen, sondern auch für den praktischen Tipp auf der Tastaturkürzel! Es stellt sich heraus, dass die Funktion in "registerDeviceWithUserId" umbenannt wurde. – Colin

Verwandte Themen