web-dev-qa-db-fra.com

swift 3 - ios: convertit anyObject en chaîne

Comment pourrions-nous convertir n'importe quel objet en chaîne dans Swift 3, c'est très facile dans l'ancienne version en utilisant.

var str = toString(AnyObject)

J'ai essayé String(AnyObject) mais la sortie est toujours facultative, même lorsque je suis sûr que AnyObject n'est pas une valeur facultative.

13
Anthony Shahine

Le compilateur vous suggère de remplacer votre code par:

let s = String(describing: str)

Une autre option est disponible si vous avez une situation où vous souhaitez échouer en silence avec une chaîne vide plutôt que de stocker quelque chose qui ne serait pas à l'origine une chaîne sous forme de chaîne.

let s =  str as? String ?? ""

sinon vous avez les moyens d'identifier et de lancer une erreur dans les réponses ci-dessus/ci-dessous.

30
sketchyTech

Voici trois options pour vous:

Option 1 - si laissé

if let b = a as? String {
    print(b) // Was a string
} else {
    print("Error") // Was not a string
}

Option 2 - garde gardé

guard let b = a as? String
else {
    print("Error") // Was not a string
    return // needs a return or break here
}
print(b) // Was a string

Option 3 - laisser avec ?? (opérateur coalescent nul)

let b = a as? String ?? ""
print(b) // Print a blank string if a was not a string
10
Ben

Essayer

let a = "Test" as AnyObject
guard let b = a as? String else { // Something went wrong handle it here }
print(b) // Test
2
Rashwan L

essaye ça -

var str:AnyObject?
str = "Hello, playground" as AnyObject?
if let value = str
{
   var a = value as! String
}

OR

var a = str as? String
1
Anupam Mishra

Voici une fonction simple ( repl.it ) qui écrasera toute valeur dans une chaîne, avec nil devenant une chaîne vide. Je l'ai trouvé utile pour traiter avec JSON qui utilise de manière incohérente null, des blancs, des nombres et des chaînes numériques pour les ID.

import Foundation

func toString(_ value: Any?) -> String {
  return String(describing: value ?? "")
}

let d: NSDictionary = [
    "i" : 42,
    "s" : "Hello, World!"
]

dump(toString(d["i"]))
dump(toString(d["s"]))
dump(toString(d["x"]))

Tirages:

- "42"
- "Hello, World!"
- ""
0
Trevor Robinson