Ich rufe eine Methode an, die einen String...
Variadic-Parameter erwartet, aber das einzige, was es von der umschließenden Funktion empfängt, ist eine einfache String
.Swift 3: Methode, die variadic erwartet String-Parameter kann nur einzelnes String-Argument empfangen
Meine Methode sieht wie folgt aus:
public func deleteKeys(keysReceived:String..., completionHandler:@escaping() -> Void)
{
RedisClient.getClient(withIdentifier: RedisClientIdentifier()) {
c in
do {
let client = try c()
client.delete(keys: keysReceived){}
completionHandler()
}
//...
}
}
Der Compiler-Fehler ist
Cannot convert value of type '[String]' to expected argument type 'String'
Diese Methode (client.delete()
) ist von einem Redis API für Perfect-Swift, so kann ich die Signatur nicht ändern, aber Ich kann die umschließende Funktion ändern (deleteKeys). Ich kann die Funktion auch nicht direkt aufrufen, weil sie sich innerhalb eines Callback-Abschlusses befindet.
Irgendwelche Vorschläge, wie ich einen empfangenen Variadic-Parameter an eine eingeschlossene Variadic-Funktion übergeben kann? Ich kann das Array brechen zu Einzelsaiten und löschen einzeln, aber das scheint nicht sehr effizient
Haben Sie das als 'obj.deleteKeys (keysReceived:" Hallo "," Welt "," Etwas ") {}'? Das sollte funktionieren. – nayem
@nayem wird es nicht kompilieren und ich rufe es noch nicht – Tyress
Kannst du die 'delete (keys:)' Methode Signatur zeigen? – nayem