web-dev-qa-db-fra.com

Swift 3 conversion d'Int en String

Dans Swift 3, la structure String ne semble pas avoir un init(_: Int) initialiseur qui permette la conversion de Int en String Ma question est pourquoi est-ce que let i = String(3) fonctionne? Quelle méthode ou initialiseur String appelle-t-il? Merci.

9
Don Giovanni

Il appelle init(_:) (ou init(_:) pour UnsignedInteger) les arguments de String class.

Au lieu de définir des initialiseurs distincts pour Int, Int64, Int32, Int16, Int8, UInt, UInt64, UInt32, UInt16 et UInt8, Apple a créé deux initialiseurs génériques: un pour les types SignedInteger et un pour les types UnsignedInteger.

10
Alexander

Pour ceux qui cherchent simplement à convertir un int en chaîne dans Swift 3:

let text = "\(myInt)"
31
Chuck Smith

Pour les personnes souhaitant convertir des entiers facultatifs en chaînes sur Swift 3,

String(describing:YourInteger ?? 0)
6
satheeshwaran

J'ai vu cette solution à quelqu'un, merci à cette personne, je ne me souviens plus de qui.

infix operator ???: NilCoalescingPrecedence

public func ???<T>(optional: T?, defaultValue: @autoclosure () -> String) -> String {
    switch optional {
    case let value?: return String(describing: value)
    case nil: return defaultValue()
    }
}

Par exemple:

let text = "\(yourInteger ??? "0")" 
0
Mercedes