Próbuję dowiedzieć się, jak rzucić Int
się na klasę String
w Swift.
Wymyślam obejście, używając, NSNumber
ale chciałbym dowiedzieć się, jak to wszystko zrobić w Swift.
let x : Int = 45
let xNSNumber = x as NSNumber
let xString : String = xNSNumber.stringValue
toString
funkcji pokazanej w odpowiedzi poniżej.Int
wydaje się, że nie matoString()
metody przynajmniej nie w edycji Xcode 6.2: Widzę, że istniejetoString
metoda globalna ( nieInt.toString()
), czy ktoś wie przewagę nad używaniemString()
konstruktora?String(Int?)
pisze „Optional (Int)”, przynajmniej w Swift 2, to nie może być to, co miałeś na myśli. Użyj zamiast tegoInt?.description
String(describing: x)
Sprawdź poniższą odpowiedź:
źródło
String
już konstruktor akceptujeInt
String
ma konstruktor, który akceptuje anInt
. Jest o wiele bardziej jasny i zwięzły.Oto 4 metody:
Mogę sobie wyobrazić, że niektórzy ludzie będą mieli problem z ss. Ale jeśli chcesz zbudować ciąg zawierający inną treść, dlaczego nie.
źródło
var ss = "\(x)"
przykład jest dokładnie taki, jak radzili konwersję podwójnego na ciąg znaków. Co uważałem za łatwe i świetne.String(describing:)
nigdy nie powinien być używany do niczego innego niż debugowanie. To nie jest normalny inicjator String.W Swift 3.0 :
źródło
String(describing:)
nigdy nie powinien być używany do niczego innego niż debugowanie. To nie jest normalny inicjator String.Swift 4 :
Developer.Apple.com> String> init (opisujące :)
Niestandardowy ciąg kabriolet
źródło
String(describing:)
nigdy nie powinien być używany do niczego innego niż debugowanie. To nie jest normalny inicjator String.describing
Metoda jest tu ... opisać jego zawartość. Daje opis. Czasami jest to to samo, co konwersja, a czasem nie . Podaj opcjonalne,describing
a zobaczysz wynik ... To nie będzie konwersja. Istnieje prosty, dedykowany sposób konwersji: użycie normalnego inicjatora String, jak wyjaśniono w innych odpowiedziach. Przeczytaj całą stronę, do której prowadzi link: zobacz, że ta metoda wyszukuje opisy na różne sposoby, z których niektóre dawałyby błędne wyniki, gdybyś spodziewał się dokładnej konwersji.Dla kompletności możesz także użyć:
lub dowolna inna wartość, która obsługuje opis.
źródło
Swift 4:
Próba pokazania wartości w etykiecie bez słowa Optional () .
tutaj x jest wartością Int używającą.
źródło
String(describing:)
Nigdy nie należy używać do innych celów niż debugowanie. To nie jest normalny inicjator String.String()
inicjatora. Ale nie dawaj opcjonalnego, najpierw rozpakuj. Lub, jak w twoim przykładzie, użyj??
. W ten sposób:let str = String(x ?? 0)
Aby zaoszczędzić czas i problemy w przyszłości, możesz dokonać rozszerzenia Int. Zwykle tworzę wspólny plik kodu, w którym umieszczam rozszerzenia, wyliczenia i inne zabawne rzeczy. Oto jak wygląda kod rozszerzenia:
Później, gdy chcesz przekonwertować int na ciąg, możesz po prostu zrobić coś takiego:
źródło
toInt
albotoInt()
.myNumber.description
. Nie ma potrzeby żadnych rozszerzeń.w swift 3.0 możemy w ten sposób przekonwertować
Int
naString
iString
naInt
źródło
integerValue
jest to typInt
. wtedy nie może mieć wartości zero. więc kompilator każe ci go rozpakować. jeśli chcesz tego uniknąć, użyj go jaklet integerValue = Int(stringValue)
. wtedy nie dostaniesz problemu. przepraszam za późną odpowiedź.z jakiegokolwiek powodu zaakceptowana odpowiedź nie działała dla mnie. Wybrałem takie podejście:
źródło
Wiele sposobów na zrobienie tego:
źródło
Swift 2:
źródło
używam tego prostego podejścia
Ciąg do Int:
i od Int do String:
źródło
Konwertuj Unicode Int na String
Dla tych, którzy chcą przekonwertować Int na ciąg Unicode, możesz wykonać następujące czynności:
Lub alternatywnie:
źródło
String
Inicjator może potrwaćUnicodeScalar
.exampleLabel.text = String(yourInt)
źródło
Aby przekonwertować ciąg na Int
Aby ukryć Int w String
1. sposób)
2. sposób)
lub
źródło
LUB
źródło
W swift 3.0 możesz zmienić liczbę całkowitą na string, jak podano poniżej
Innym sposobem jest
// lub dowolną liczbą całkowitą zamiast 15
źródło
Wolę używać interpolacji ciągów
Każdy obiekt ma pewną reprezentację ciągu. To upraszcza sprawę. Na przykład, jeśli chcesz utworzyć kilka
String
z wieloma wartościami. Możesz także wykonać dowolną matematykę lub użyć pewnych warunkówźródło
Jeśli lubisz szybkie rozszerzenie, możesz dodać następujący kod
następnie możesz uzyskać ciąg znaków za pomocą właśnie dodanej metody
źródło
źródło
źródło