animateWithDuration: Animationen: Vervollständigung: in Swift

8

In objective-C würde mein Animationsbit ungefähr so ​​aussehen:

%Vor%

Wenn ich das in Swift übersetze, sollte es ungefähr so ​​aussehen:

%Vor%

Es klagt über die auskommentierte Zeile. Der Fehler, den ich erhalte, ist: Could not find an overload for 'animateWithDuration' that accepts the supplied arguments

Ich weiß, dass die Beendigung des Abschlusses einen booleschen Wert annimmt und ein void zurückgibt, aber ich sollte in der Lage sein, etwas zu schreiben, das dort sowieso nicht bool ist .... richtig?

Jede Hilfe ist willkommen.

Bearbeiten : So deklariere ich das Array, das ich in der Funktion verwende:

%Vor%

Ein Array, das SwipeableCell-Objekte akzeptiert.

    
Nilzone- 18.06.2014, 22:29
quelle

1 Antwort

8

Das ist ein gutes, kniffliges!

Das Problem ist in Ihrem Abschlussblock ...

A. Ich würde damit anfangen, es so umzuschreiben: (nicht die endgültige Antwort, aber auf dem Weg dorthin!)

{ _ in self.storedCells.removeAtIndex(1) }

(das _ anstelle des "fertigen" Bool, um dem Leser anzuzeigen, dass sein Wert nicht im Block verwendet wird - Sie können auch erwägen, eine Erfassungsliste hinzuzufügen, um einen starken Referenzzyklus zu vermeiden )

B. Die Schließung, die Sie geschrieben haben, hat einen Rückgabetyp, wenn es nicht sollte! Alles dank Swifts praktischer Funktion "Impliziter Rückgabewert von einzelnen Expressionsverschlüssen" - Sie geben das Ergebnis dieses Ausdrucks zurück, welches das Element am angegebenen Index ist

(der Typ des Abschlussarguments für completion sollte ((Bool) - & gt; Leer) sein)

Dies kann wie folgt gelöst werden:

{ _ in self.storedCells.removeAtIndex(1); return () }

    
fqdn 19.06.2014, 00:26
quelle