2015-09-11 28 views
9

Questo è il mio init:`riferimento ambiguo al member` durante la creazione di convenienza init in estensione

extension NSNumberFormatter { 

    convenience init(digits: Int = 0) { 
     self.init() //ambiguous reference to member 'NSNumberFormatter.init' 

     groupingSeparator = " " 
     decimalSeparator = "." 
     numberStyle = .DecimalStyle 
     roundingMode = .RoundHalfDown 

     maximumFractionDigits = digits 
     minimumFractionDigits = digits 
    } 
} 

Qual è la ragione?

Lo stesso problema si verifica quando inserisco self.init() alla fine del mio inizializzatore di convenienza.

risposta

10

Il motivo è che è stato creato un nuovo init che può essere chiamato senza parametri poiché digits ha un valore predefinito di 0. Quindi ora, init() può fare riferimento all'inizializzatore predefinito o a quello nuovo. Se si rimuove il valore predefinito per digits, verrà quindi compilato.

+0

Giusto, davvero intelligente :) grazie –

Problemi correlati