2016-06-14 2 views
1

Ich verwende CVCalendar im Projekt und ich habe den Xcode auf 8.0 Beta aktualisiert. Das Problem ist, ich einen Fehler in einer Datei erhalte sagen:Initialisierer für Typ 'Int' mit einer Argumentliste vom Typ '()' kann nicht aufgerufen werden

1) Kann nicht Intializer für Typ 'Int' mit einer Argumentliste von Typ Invoke '()'

2) Argument Labels ‚(Körper :)‘alle verfügbaren Überlastungen nicht

// MARK: - SequenceType 

private var storage = [T]() 

extension CVSet: Sequence { 
    public func makeIterator() -> AnyIterator<T> { 
     var power = 0 
     let nextClosure :() -> T? = { 

      (power < self.count) ? self.storage[Int(power += 1)] : nil //Getting error here self.storage[Int(power += 1)] 
     } 
     return AnyIterator(body: nextClosure) 
    } 
} 

Antwort

0

Der += Betreiber einen Typ wie (Int, Int) -> _ hat übereinstimmen, ist es Rückgabetyp _/()/void ist bedeutend. Das heißt, die Funktion gibt nichts zurück. Der Ausdruck Int(power += 1) ist also derselbe wie Int(), was nicht gültig ist.

Dies wurde getan, um böse Nebenwirkungen in großen Ausdrücken versteckt zu verhindern. Versuchen Sie stattdessen:

if (power < self.count) { 
    power += 1 
    return self.storage[power] 
} 
else { 
    return nil 
}