„Indeks dolny” jest niedostępny: nie może istnieć indeks dolny z CountableClosedRange , zapoznaj się z komentarzem do dokumentacji do dyskusji
W Swift 4 pojawia się ten błąd, gdy próbuję pobrać
Substringz
Stringprzy użyciu składni indeksu dolnego.
Opcja „indeks dolny” jest niedostępna: nie może istnieć wiersz indeksu dolnego z wartością CountableClosedRange. Dyskusja zawiera komentarz do dokumentacji
Na przykład:
let myString: String = "foobar"
let mySubstring: Substring = myString[1..<3]
Dwa pytania:
- Jak mogę rozwiązać ten błąd
- Gdzie jest „komentarz do dokumentacji do dyskusji” wspomniany w błędzie
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
8 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
"palindrome" [1 .. & < 3]
i"palindrome" [1 ... 3]
, użyj tych rozszerzeń .Swift 4
<pre class="lang-swift prettyprint-override">
Swift 3
W przypadku Swift 3 zamień na
return self [start ... end]
ireturn self [start .. & < end]
.<ol start="2">
[*]
Firma Apple nie wbudowała tego w język Swift, ponieważ definicja „znaku” zależy od sposobu kodowania ciągu. Znak może mieć od 8 do 64 bitów, a wartością domyślną jest zwykle UTF-16. Możesz określić inne kodowanie ciągów w .
[/*]
[/list]
To jest dokumentacja
https://github.com/apple/swift ... 23L15
odwołuje się do błędu Xcode.
Więcej o kodowaniu ciągów, takich jak UTF-8 i UTF-16
https://developer.apple.com/li ... .html
Anonimowy użytkownik
Potwierdzenie od:
Subskrybowanie linii z nigdy nie było dostępne w standardowej bibliotece Swift. Ten kod nie był ważny, dopóki istniał Swift:
let mySubstring: Substring = myString[1..<3]
Nowy zwraca indeks zakodowany w formacie UTF-16 (16-bitowy). Szybkie użycie ciągów
rozszerzony klaster grafemowy
który może zająć od 8 do 64 bitów, aby zapisać znak. Emoji robią bardzo dobre demo:
W rzeczywistości otrzymywanie nie zmieniło się w ogóle w Swift 4, na lepsze ani na gorsze:
Anonimowy użytkownik
Potwierdzenie od:
- Jak mogę rozwiązać ten błąd
Ten błąd oznacza, że nie możesz użyć Int w formacie indeksu - musisz użyć String.Index, który możesz zainicjować za pomocą encodedOffset Int.<ol start="2">
[*]
Gdzie jest „komentarz do dokumentacji do dyskusji” wspomniany w błędzie?
[/*]
[/list]Jest na GitHubie w standardowym repozytorium biblioteki Swift w pliku o nazwie UnavailableStringAPIs.swift.gyb na dole zamkniętej szafki na dokumenty, która utknęła w opuszczonej szafie z napisem „Uważaj na lamparta” na drzwiach.
połączyć
https://github.com/apple/swift ... 23L15
Anonimowy użytkownik
Potwierdzenie od:
Otrzymujesz wtedy całą funkcjonalność tablicy ...
Anonimowy użytkownik
Potwierdzenie od:
p-sun
https://stackoverflow.com/a/46627527/709202
i
Justin Oroza
https://stackoverflow.com/a/55659545/709202, oto dwa rozszerzenia, które chronią przed nieprawidłowymi indeksami poza początkiem i końcem ciągu (te rozszerzenia również unikają ponownego skanowania ciągu od samego początku tylko po to, aby znaleźć indeks na końcu zakresu):
Anonimowy użytkownik
Potwierdzenie od:
odpowiedź p-sun
https://stackoverflow.com/a/46627527/4188011
Swift 4
Istotne zmiany:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
to , a nie .
Powinieneś użyć następującego kodu: