2017-08-28 46 views
9

Jak mogę zaktualizować następujący kod do nowej wersji SWIFT:„podciąg (do :)” jest przestarzałe: Proszę używać String krojenia indeks z „częściowym zakresie zapisu do” operator

self.areaCodeLael.text! = localNumber.substring(to: localNumber.index(localNumber.startIndex, offsetBy: 3)) 

Próbowałem po to stanowisko, ale nie mogę uzyskać to prawo How can I use String slicing subscripts in Swift 4?

I dostosowane mój oryginalny kod do localNumber[..<3] ale otrzymuję:

nie można indeks wartość typu „string "z indeksem typu" PartialRangeUpTo "

+1

Zaktualizuj swoje pytanie pokazujące, jak próbujesz wykorzystać informacje w połączonym pytaniu. – rmaddy

+2

Niepowiązane, ale dlaczego wstawiasz operator '!' Tuż przed '='? Pozbądź się tego. – rmaddy

Odpowiedz

15

Powiedziałbym, localNumber.prefix(3) w tej sytuacji. Krótkie i słodkie.

+0

Próbowałem, ale prefiks jest nierozwiązanym identyfikatorem localNumber.String (prefiks (3)) – user1079052

+0

Mam go do pracy, dziękuję za sugestię String (localNumber.characters.prefix (3)) – user1079052

+2

@ user1079052 Nie, chcesz ' String (localNumber.prefix (3)) '. – rmaddy

5

Problem z próbą użycia localNumber[..<3] polega na tym, że nie można przekazać wartości Int jako zakresu. Musisz podać String.Index.

Twój kod musi być:

let index = localNumber.index(localNumber.startIndex, offsetBy: 3) 
self.areaCodeLael.text = localNumber[..<index] 

Należy również pamiętać, że nie chcesz operatora ! po text.

+0

Otrzymuję "_Cannot subscript" o wartości typu "String" z indeksem typu "PartialRangeUpTo '_" –

+0

Och, rozwiązuję go, zawijając wynik indeksu dolnego za pomocą 'String (...)', np. 'String (localNumber [..