2016-11-03 53 views
5

W swift2.3 ++ wykorzystanie operatora dla string.index wzrostJak zwiększyć String.Index w swift3?

np. i ++

Zmieniłem do szybkiej 3, że kod zdarzyć " Jednoargumentowy operatora '++' nie może być stosowany do argumentu typu '@lvalue String.Index' (aka '@lvalue String.CharacterView.Index') "w szybkim 3

Przepisuję np. i + = 1

, ale ten kod nie może zostać rozwiązany. Proszę, pomóż mi.

Odpowiedz

4

String.Index jest typem dla String.CharacterView.Index. Indeksu nie można samodzielnie zwiększyć. Zamiast tego można użyć metody instancji index(after:) na urządzeniu CharacterView, której użyto do wyodrębnienia indeksu.

Np

let str = "foobar" 
let chars = str.characters 

if let bIndex = chars.index(of: "b") { 
    let nextIndex = chars.index(after: bIndex) 
    print(str[bIndex...nextIndex]) // ba 
} 

Albo, biorąc pod uwagę, że masz wskaźnik (np str.startIndex), można użyć metody index(_:, offsetBy:) instancji dostępne także bezpośrednio do String przypadkach:

let str = "foobar" 
let startIndex = str.startIndex 
let nextIndex = str.index(startIndex, offsetBy: 1) 
print(str[startIndex...nextIndex]) // fo 
4

String.Index robi” t mają ++, += lub dowolnego operatora (innego niż porównania, np. <, >, ==) def na to. Ma inne metody zdefiniowane do przenoszenia indeksu. Aby zwiększyć pozycję indeksu 1, kod powinien wyglądać następująco: string.index(i, offsetBy: 1)

let string = "Some string" 
var i = string.startIndex 
i = string.index(i, offsetBy: 1)