Ich habe die folgende MethodeSwift Ambiguos Methoden mit variadische paramameter
static func t(key: String, params: AnyObject...) -> String{
let string = .......
if (params.count == 0){
return string
} else {
return String(format: string, params)
}
}
Das Problem ist, dass ich brauche in Objective C dieses Verfahren zur Verfügung zu stellen, die mit variadische params unmöglich ist. Ich habe versucht, eine andere Methode für Ziel c zu erstellen, wobei params ein Array ist. Aber dann muss ich auch noch eine dritte haben, wenn es keine Params gibt.
@objc static func t(key: String, params: [AnyObject]) -> String
@objc static func t(key: String) -> String
Aber jetzt rasche beklagt, dass Verfahren t
mehrdeutig ist, weil 1. und 3. Methode nur den Schlüssel nehmen.
Wie funktioniert das? Ich weiß, dass ich verschiedene Namen verwenden könnte, aber ich möchte die Dinge konsistent halten.
UPDATE: Ein anderes Problem ist, dass ich String(format:...)
nicht richtig einmal in der Funktion aufrufen kann, da params ein Array und keine Gruppe von Parametern ist. Irgendeine nette Lösung?
wie in der Frage erwähnt, das Problem tritt auf, wenn Sie die Methode ohne zusätzliche Parameter aus * Swift Rückruf * , z.B 'let foo = C.t (" bar ")'. –
Ja, natürlich, Martin, danke! Ich habe die Antwort geändert ... – milos
Super! Würde das schöner sein :), aber es funktioniert !! –