J'ai une structure Swift comme celle-ci.Impossible de convertir la valeur du type 'NSTaggedPointerString' en 'NSNumber'
struct Usage {
var totalData: Double
var remainingTotalData: Double
init(jsonData: NSData) {
var jsonDict = [String: AnyObject]()
do {
jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject]
} catch {
print("Error occurred parsing data: \(error)")
}
totalData = jsonDict["totalfup"] as! Double
remainingTotalData = jsonDict["totalrem"] as! Double
}
}
À partir d'une API, j'obtiens la réponse JSON suivante. C'est l'println de la variable jsonDict
.
[
"totalfup": 96.340899,
"totalrem": 3548710948
]
Lorsque je tente d'affecter la valeur du totalfup
à la propriété totalData
, je reçois cette erreur.
Impossible jeter la valeur de type 'NSTaggedPointerString' à 'NSNumber'
Quelqu'un sait pourquoi? J'ai essayé de changer le type de propriété à float
et ensuite la struct entière à la classe mais toujours le problème se produit.
Merci beaucoup! Ça a marché. Savez-vous pourquoi c'est? De retour dans Swift 1.2, nous n'avions pas à convertir en NSString, non? – Isuru
Je ne suis pas sûr de Swift 1.2. Mais 'NSJSONSerialization' désérialise parfois la valeur numérique en nombre. Bien sûr, avant de convertir les valeurs de 'NSDecimalNumber', laissez d'abord vérifier [object class] (dynamicType). – anhtu
J'ai eu la même erreur avec un cadre que j'utilisais qui lit les valeurs de configuration à partir d'un fichier plist personnalisé dans les ressources de l'ensemble (pas de JSON impliqué). J'avais défini certains des champs de plist comme 'String's, mais ils s'attendaient probablement à ce qu'ils soient des' Number's. Changer le type en 'Number' a résolu le problème. –