2016-03-22 9 views
72

Sto utilizzando il seguente codice:'init (partenza: :)' è deprecato: verrà rimosso a Swift 3. Utilizzare il '.. <' operatore

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0) 

Dal aggiornamento per Xcode 7.3 (Swift 2.2) ho ottenuto il seguente suggerimento:

'init (inizio: fine :)' è deprecato: verrà rimosso a Swift 3. Utilizzare la '.. <' operatore.

Per me non è chiaro come a "tradurre" in modo corretto con "utilizzando l'operatore '.. <'.

+0

per la voce a 0 .. Anton

+0

http: // stackoverflow.com/a/30094120/2303865 –

risposta

88

Si dovrebbe semplicemente scrivere

var continousDigitsRange1:Range<Int> = 0..<0 

o se si vuole andare ancora più semplice

var continousDigitsRange = 0..<0 
+2

si da vero MVP –

8

L'operatore di intervallo chiuso (a...b) definisce un intervallo che va da a b e include i valori a e b. Il valore di a non deve essere superiore a b.

L'operatore di intervallo aperto a metà (a..<b) definisce un intervallo che va da a b, ma non include b. Si dice che sia semiaperto perché lo contiene il suo primo valore, ma non il suo valore finale. Come per l'operatore di intervallo chiuso, il valore di a non deve essere maggiore di b. Se il valore di a è uguale a b, l'intervallo risultante sarà vuoto.

The Swift Programming Language (Swift 2.2) - Basic Operators

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0) 
--to-- 
var continousDigitsRange:Range<Int> = 0..<0 
+1

Ahh, sì buon punto, commutati in su - ha voluto illustrare le opzioni di media a rapida. – solenoid

+0

Cosa finisce in continuousDigitsRange? Sembra un nulla per me. A quale uso potrebbe essere destinata questa gamma? Sto provando anche a imparare! – user462990

35

Anche la pena notare, ad substringWithRange una stringa, è ora possibile utilizzare

let theString = "Hello, how are you" 
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end) 
theString.substringWithRange(range) 
+1

Una piccola cosa è che se si contano dalla fine della stringa, utilizzare endIndex invece di avvio come muggito: 'lasciare gamma = theString.startIndex.advancedBy (start) .. Hamid

2

per mostrare la risposta di bmichotte in piena ...

let theString = "Hello, how are you today my friend" 
    let start = 3 
    let end = 15 
    let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end) 
    let p = theString.substringWithRange(range) 
    print("this is the middle bit>\(p)<") 

questo produce questo è il bit centrale> lo, come sono <

1

aggiungendo alcuni punti con riferimento rapido 3,0

// Countale Gamma Esempio.

let range1 = 0..<5

numerabile chiusa Gamma Esempio

let range2 = 0...5 

// Gamma da limiti

let range = Range(uncheckedBounds: (range1.lowerBound,range1.upperBound)) 

// Per ottenere la distanza da substringRange.

let str = "Hello, how are you" 
let substringRange = str.characters.indices 

// Sotto Swift 3.0

let length = substringRange.distance(from: substringRange.startIndex, to: substringRange.endIndex) 

// per SWIFT 3,0

let length2 = str.distance(from: substringRange.startIndex, to: substringRange.endIndex) 
1

ho sempre avuto una funzione per ottenere la gamma sottostringa di una stringa. Qui è la mia funzione di aggiornamento per Swift 3:

func getSubStringRange(fullString: String, fromIndex: Int, subStringSize: Int) -> Range<String.Index> { 
    let startIndex = fullString.characters.index(fullString.startIndex, offsetBy: fromIndex) 
    let endIndex = fullString.characters.index(startIndex, offsetBy: subStringSize) 

    let subStringRange = startIndex..<endIndex 

    return subStringRange 
} 

La funzione è piuttosto auto esplicativo - Si passa in una stringa (fullString), l'indice di quella stringa in cui la sottostringa inizia (fromIndex) e quanto è grande il sottoStringa è (subStringSize).

Esempio:

let greeting = "Hi, my name is Nathaniel" 
let getName = greeting[getSubStringRange(fullString: greeting, fromIndex: 15, subStringSize: 9)] 

print("Name: \(getName)") 

-> Stampe: "Nome: Nathaniel"

+1

non compila con Swift 3. non v'è alcuna chiusura ')' 'dopo subStringSize: Int' – Vladislav

+1

questra struttura a 'endIndex' vi siete persi' 'fullString.' prima startIndex', in modo che il corretto sarebbe:' lasciare endIndex = fullString.characters.index (fullString.startIndex, offsetBy: subStringSize) ' – Mette

+0

Grazie ragazzi. Devo essermi addormentato quando l'ho digitato! Ho dovuto digitare manualmente l'intera partita, piuttosto che un copia/incolla direttamente dal mio codice come ero su un PC Windows durante la pubblicazione! – Krivvenz