Anonyme Schließung kann nicht innerhalb einer Schließung mit expliziten Argumenten verwendet werden

8

Kann smb erklären, was das Problem ist, wie soll ich meinen Code ändern?

Ich muss CKRecord s filtern, das von CloudKit zurückgegeben wurde.

%Vor%

    
János 11.12.2014, 22:41
quelle

1 Antwort

18

Es gibt zwei Möglichkeiten, Closures zu schreiben: mit expliziten Argumentnamen oder durch Bezugnahme auf die Argumente als $ 0, $ 1 etc.

Zum Beispiel sind diese beiden Dinge gleichwertig:

%Vor%

Aber Sie können diese Dinge nicht mischen - entweder benennen Sie die Argumente oder Sie verwenden $n . Du kannst nicht beides:

%Vor%

In Ihrem Beispiel sieht es so aus, als hätten Sie vergessen, der Methode filter eine Schließung zu geben. Das bedeutet, dass sich Ihre records nicht innerhalb eines neuen Abschlusses ohne Argumente befindet - der Swift-Compiler denkt also, dass error sich auf den äußeren Abschluss bezieht, der seine Argumente explizit als filter und () angibt. Daher beschweren Sie sich, dass Sie in einer Closure mit expliziten Argumentnamen nicht auf Argumente als {} verweisen können.

(Das Problem besteht natürlich darin, einen Abschluss für %code% zu liefern, also den %code% durch %code% zu ersetzen)

    
Airspeed Velocity 12.12.2014, 00:34
quelle

Tags und Links