Dans Swift 3, la structure String
ne semble pas avoir un initialiseur init(_: Int)
qui permettra la conversion d'un Int
à un String
. Ma question est la suivante: pourquoi fonctionne let i = String(3)
? Quelle méthode String
ou initialisateur appelle-t-il? Merci.Swift 3 conversion de Int à la chaîne
Répondre
Il appelle init(_:)
(ou init(_:)
pour UnsignedInteger
) arguments de la classe String
.
Plutôt que de définir initializers séparés pour Int
, Int64
, Int32
, Int16
, Int8
, UInt
, UInt64
, UInt32
, UInt16
et UInt8
, Apple a fait deux initialiseurs génériques: l'un pour SignedInteger
types, et un pour UnsignedInteger
types.
Pour quiconque cherche juste à convertir un int en chaîne dans Swift 3:
let text = "\(myInt)"
Pour les personnes qui veulent convertir en option Entiers Strings sur Swift 3,
String(describing:YourInteger ?? 0)
C'est le compilateur Swift qui m'a incité à passer à la description, pas moi! pas moi! – satheeshwaran
J'ai vu cette solution à quelqu'un, merci, à cette personne, je ne me souviens pas 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")"
Pourriez-vous élaborer sur la façon de mettre en œuvre cela ... s'il vous plaît? –
J'ai UtilsView.swift, dans cette bibliothèque j'ai d'autres fonctions que j'utilise dans tous les projets. Une fonction est, opérateur d'infixe ???: NilCoalescingPrecedence fonction publique ???
Votre réponse n'a pas abordé la question –
d'accord avec le commentaire, mais cela m'a aidé avec ce que je cherchais – Josh
vous remercie !!!! –