2016-03-22 6 views
72

in Swift 3. Verwenden entfernt werden ich den folgenden Code bin mit:'init (Start: Ende :)' ist veraltet: es wird die '.. <' Operator

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

Seit Update auf Xcode I 7.3 (Swift 2.2) bekam die folgende Hinweis:

'init (Start: Ende :)' ist veraltet: es wird in Swift 3. Verwenden sie die '.. <' Betreiber entfernt werden.

Für mich ist nicht klar, wie man „übersetzen“ es richtig mit „mit dem‚.. <‘Betreiber.

+0

für Artikel in 0 .. Anton

+0

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

Antwort

88

Sie einfach

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

schreiben sollte oder wenn Sie gehen wollen noch einfacher

var continousDigitsRange = 0..<0 
+2

du bist echt MVP –

8

Der geschlossene Bereich Operator (a...b) definiert einen Bereich, der von nach b verläuft und die Werte a und b enthält. Der Wert von a darf nicht größer als b sein.

Der halboffene Bereichsoperator (a..<b) definiert einen Bereich, der von nach b verläuft, aber nicht b. Es wird gesagt, dass es halboffen ist, weil es seinen ersten Wert enthält, aber nicht seinen endgültigen Wert. Wie bei dem geschlossenen Bereichsoperator darf der Wert von a nicht größer als b sein. Wenn der Wert von a gleich b ist, ist der resultierende Bereich leer.

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, ja guter Punkt, schaltet es um - wollte die Reichweitenoptionen in Swift illustrieren. – solenoid

+0

Was endet in continuousDigitsRange? Sieht für mich wie ein Null aus. Welchen Nutzen könnte dieser Bereich haben? Ich versuche es auch zu lernen! – user462990

35

Auch erwähnenswert, zu substringWithRange ein String, Sie jetzt

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

Eine kleine Sache ist, dass, wenn Sie vom Ende der Zeichenfolge zählen, endIndex anstelle von Start wie folgt verwenden: 'Let Bereich = theString.startIndex.advancedBy (Start) .. Hamid

2

zeigen bmichotte Antwort in voller ...

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)<") 

verwenden können dies erzeugt das ist das mittlere Bit> lo, wie <

1

einige Punkte mit Bezug Hinzufügen zu schnellen 3.0

// Abzählbare Bereich Beispiel sind.

let range1 = 0..<5

Abzählbare Geschlossen Bereich Beispiel

let range2 = 0...5 

// Bereich von Grenzen

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

// Um ​​den Abstand von substringRange zu erhalten.

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

// Unter Swift 3.0

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

// Für Swift 3,0

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

Ich hatte schon immer eine Funktion den Teilbereich einer Zeichenfolge zu erhalten. Hier ist meine aktualisierte Funktion für 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 
} 

Die Funktion ist ziemlich selbsterklärend - Sie passieren in einem String (fullString), der Index dieser Zeichenfolge in dem die Teilkette beginnt (fromindex) und wie groß das substring (UnterStringSize).

Beispiel:

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

print("Name: \(getName)") 

-> Prints: "Name: Nathaniel"

+1

Kompiliert nicht mit Swift 3. Es gibt kein abschließendes ')' nach 'subStringSize: Int' – Vladislav

+1

Bei der 'endIndex' Eigenschaft haben Sie' fullString. 'vor' startIndex' verpasst, also wäre die richtige: 'let endIndex = fullString.characters.index (fullString.startIndex, offsetBy: subStringSize) ' – Mette

+0

Danke Jungs. Ich muss geschlafen haben, als ich das eingegeben habe! Ich musste die ganze Menge manuell eingeben, anstatt direkt aus meinem Code zu kopieren/einfügen, wie ich es auf einem Windows-PC getan habe! – Krivvenz

Verwandte Themen