znaków - właściwość instancji String, jest przestarzała z Xcode 9.1
Bardzo przydatne było pobranie podciągu z String za pomocą characters
właściwości, ale teraz jest on przestarzały, a Xcode sugeruje użycie substring
. Próbowałem sprawdzić pytania SO i samouczki / wytyczne dla programistów Apple. Ale nie widziałem żadnego rozwiązania / alternatywy zgodnie z sugestią.
Oto komunikat ostrzegawczy:
„Znaki” są przestarzałe: użyj ciągu lub podłańcucha
Mam tak wiele operacji na łańcuchach, które są wykonywane / obsługiwane za pomocą właściwości characters
.
Czy ktoś ma pomysł / informacje o tej aktualizacji?
String
zmianach z Swift 3 na 4 i przeczytaj również SE0163count
zamiast tego.string.characters.forEach
nowego APIstring.forEach { char in process(char) }
Odpowiedzi:
Swift 4 wprowadził zmiany w string API.
Możesz po prostu użyć
!stringValue.isEmpty
zamiaststringValue.characters.count > 0
aby uzyskać więcej informacji, pobierz próbkę stąd
np
źródło
Przykłady wersji Swift 4 i Swift 3:
źródło
Jednym z najczęstszych przypadków manipulowania ciągami są odpowiedzi JSON. W tym przykładzie utworzyłem rozszerzenie w mojej aplikacji zegarka, aby porzucić ostatnie (n) znaki obiektu Bitcoin JSON.
Swift 3:
Komunikat o błędzie Xcode 9.1:
Xcode mówi nam użyć zmiennej ciąg lub metody bezpośrednio .
Swift 4:
Kompletne rozszerzenie:
Połączenie:
Konsola:
Dodatkowe przykłady:
print("Spell has \(invisibleSpellName.count) characters.")
return String(dropLast(n))
return String(removeLast(n))
Dokumentacja:
Często będziesz używać typowych metod, takich jak
dropLast()
lubremoveLast()
lubcount
tak jest tu wyraźny dokumentacji firmy Apple dla każdej metody.droplast ()
removelast ()
liczenie znaków
źródło
To ostrzeżenie to tylko wierzchołek góry lodowej, był łup zmian w ciągach znaków, ciągi znaków są znowu zbiorem znaków, ale mamy coś nowego i fajnego, subStrings :)
To świetna lektura na ten temat: https://useyourloaf.com/blog/updating-strings-for-swift-4/
źródło
Użyj tego,
characters
ponieważString
przestał być kolekcją w Swift 2.0. Jednak jest to nadal ważny kod w Swift 4, ale nie jest już potrzebny, ponieważString
jest to plikCollection
ponownie.Na przykład Swift 4
String
ma teraz bezpośrednią właściwość count, która podaje liczbę znaków:Przykłady dla String i SubString.
Swift 4
String
teraz bezpośrednio pobiera Element, który daje pierwszy znak String:(string.characters.first)
Za pomocą SubString pobierz pierwszy znak.
źródło
.first
ponieważ ciąg jest""
pusty. zwróci tylko nil, alesubstring
spowoduje błąd..characters
wystarczająco dużoMożesz także użyć tego kodu do grupowania słowników bez używania {$ 0.characters.first! }.
źródło
Po prostu usuń znaki Na przykład:
stringValue.characters.count to stringValue.count
źródło