2016-06-14 1 views
1

J'utilise CVCalendar dans le projet et j'ai mis à jour le Xcode vers la version 8.0 Beta. Le problème est que je reçois une erreur dans un fichier disant:Impossible d'appeler Initializer pour le type 'Int' avec une liste d'arguments de type '()'

1) Vous ne pouvez pas Invoquer Intializer pour le type 'Int' avec une liste d'arguments de type '()'

2) étiquettes Argument « (corps :) » ne correspondent pas disponible

surcharge
// 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) 
    } 
} 

Répondre

0

L'opérateur += a un type tel que (Int, Int) -> _, ce qui signifie qu'il est le type de retour est _/()/void. C'est-à-dire que la fonction ne retourne rien.

Ainsi, l'expression Int(power += 1) est la même que Int(), ce qui n'est pas valide. Ceci a été fait pour empêcher les effets secondaires désagréables cachés dans les grandes expressions. Essayez plutôt:

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