2014-10-22 19 views
8

C'è uno snippet di codice nel libro rapido fornito da Apple. L'ho digitato nel parco giochi xcode ma mostra gli errori "Operatore non è un operatore binario noto" e "Uso di identificatore non risolto". Il codice è:Utilizzo di ".." con ciclo for

Xcode Playground code In base al libro, l'operatore ".." può essere utilizzato con il ciclo per creare un intervallo che omette il suo valore superiore. Ma visualizza errore. Cambiare ".." in "..." l'operatore sembra correggere l'errore. Ma perché non funziona ".."?

+0

È necessaria l'ultima versione del libro. La versione che possiedi è una versione beta di Swift. – Fogmeister

+0

Grazie Fogmeister. –

risposta

16

Hai una versione non aggiornata del libro rapido.

Ecco qui. L'attuale versione della gamma socchiusa è 0..<3 non 0..3https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/BasicOperators.html

+0

Un'altra cosa, questi tipi di problemi appariranno di più? Cambieranno costantemente la sintassi di swift se ne hanno voglia? –

+0

Bene nell'ultima versione (1.1) hanno aggiunto la possibilità di avere resi opzionali da init. Quello era un bug che si rompeva e aveva bisogno di modifiche al codice per risolverlo. In risposta alla tua domanda, probabilmente, sì. Swift è ancora una lingua molto giovane. Le modifiche tra il tuo codice e la versione corrente sono state fatte prima che fosse la versione 1.0 e quindi era previsto. Ci saranno meno cambiamenti da ora in poi, ma questo non vuol dire che non cambierà nulla. – Fogmeister

+0

Stavo leggendo una vecchia versione di swift ibook e persino Xcode era 6.0.1. Ho aggiornato entrambi. Grazie per le informazioni e la risposta rapida Fogmeister. –

1

Le cose ora sono diverse in Swift 2. Ecco come farlo ora in Xcode 7 (la domanda originale mostra altamente in una ricerca su Google per questo particolare problema) :

for i in 1 ..< Process.argc { 
    let index = Int(i); 

    if let arg = String.fromCString(Process.unsafeArgv[index]) { 
     switch arg { 
     case "-whatever": 
      // do something 

     default: 
      break 
     } 
    } 
} 
+0

Ah, mi dispiace. Sono originariamente venuto qui per il problema ".." ma stavo anche cercando di elaborare gli argomenti della riga di comando. La mia soluzione postata contiene ovviamente più del necessario, ma suppongo che non possa far male. –