将 Swift 字典转换为 JSON 字符串时的 try-catch 放置

hel*_*loB 4 try-catch swift

这是我所得到的:

        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")
        }
Run Code Online (Sandbox Code Playgroud)

我收到错误try must be placed on the initial value expression。我尝试像这样“改写”:

        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")
        }
Run Code Online (Sandbox Code Playgroud)

但这会导致错误Call can throw but is not marked with 'try'。我应该如何构造这个 try-catch 以及这些错误代码的含义是什么?

Kay*_*way 5

您必须更改放置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")
    }
Run Code Online (Sandbox Code Playgroud)