4 votes

placement de try-catch dans la conversion d'un dictionnaire Swift en chaîne JSON

Voilà ce que j'ai :

        do {
            try let jsonData: NSData = NSJSONSerialization.dataWithJSONObject(paramsDict, options: NSJSONWritingOptions.PrettyPrinted)
            jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String
        } catch {
            print("CAUGHT SOMETHING session token")
        }

Je reçois une erreur try must be placed on the initial value expression . J'ai essayé de "reformuler" comme ça :

        do {
            let jsonData: NSData = NSJSONSerialization.dataWithJSONObject(paramsDict, options: NSJSONWritingOptions.PrettyPrinted)
            try jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String
        } catch {
            print("CAUGHT SOMETHING session token")
        }

mais cela conduit à une erreur Call can throw but is not marked with 'try' . Comment dois-je structurer ce try-catch et que signifient ces codes d'erreur ?

5voto

Kayla Galway Points 586

Vous devez changer l'emplacement de l'endroit où vous mettez votre try .

    do {
        if let jsonData: NSData = try NSJSONSerialization.dataWithJSONObject(paramsDict, options: NSJSONWritingOptions.PrettyPrinted) {
          //is jsonString a variable you have previously declared?
          //if not, put "if let" before it, because you are creating it IF:
          //your "try" - attempt to get data from json succeeds
          jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String 
        }
    } catch {
        print("CAUGHT SOMETHING session token")
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X