2016-03-19 1 views
0

J'essaie d'obtenir des données en utilisant l'annonce JSON, il y a une valeur nulle provoque un crash.app se bloque à cause de valeurs nulles, swift 2

let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers) as! NSDictionary 

let success:NSInteger = jsonData.valueForKey("success") as! NSInteger 
//code error bad instruction 

NSLog("Success: %ld", success); 

Comment puis-je annuler la valeur null?

Répondre

0
let success = (jsonData["success"] as? NSInteger) ?? 0 

étape par étape:

  1. obtenir la valeur jsonData["success"] (s'il vous plaît, ne pas utiliser valueForKey, il fait quelque chose de complètement différent)
  2. as? NSInteger - essayez de le jeter à NSInteger ou retourner nil si ce n'est pas un nombre (dans ce cas, il s'agit d'une instance NSNull)
  3. ?? 0 - si nil, utilisez une valeur par défaut de zéro
+0

merci de votre réponse mais cette ligne a été activée: 'si jsonData [" message_erreur "] as? NSString! = Nil { error_msg = jsonData ["message_erreur"] as! NSString } else { error_msg = "Erreur inconnue" } ' – VahidGR

+0

@VahidGR Cette ligne n'apparaît même pas dans la question. Si vous avez plus de bugs, s'il vous plaît, essayez de les réparer d'abord par vous-même et ensuite éventuellement poser une autre question. N'oubliez pas d'inclure également les données JSON que vous essayez d'analyser. – Sulthan

+0

désolé. Je vous remercie – VahidGR