【问题标题】:how to Deserialization json response type of without using library swift如何在不使用库 swift 的情况下反序列化 json 响应类型
【发布时间】:2016-04-25 18:19:45
【问题描述】:

我已经创建了这个登录功能来获取用户身份并允许他登录到应用程序。我有一个问题,如何在没有示例的情况下反序列化 [String: AnyObject] 的元组 let user:String = resp.1 as!字符串

func getUserCredential(username:String,password:String)->UserModel
     {
        var authenticatedUser  = UserModel()
        let user = username
        let password = password

        let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)

        Alamofire.request(.GET, "https://httpbin.org/basic-auth/\(user)/\(password)")
            .authenticate(usingCredential: credential)
            .responseJSON { response in
                print("response \(response)");
                if let validResponse = response.result.value as? [String : AnyObject]
                {
                    for resp  in validResponse
                    {
                        let user:String = resp.1 as! String
                        let isAuthenticated:Bool =  resp.0 as! Bool
                        let isManager:Bool = true
                        authenticatedUser = UserModel(username:user,isAuthenticated:isAuthenticated,isManager:isManager)
                    }
                }
                else if let error = response.result.error
                {
                    print("Error: \(error)")
                }
        }
        return authenticatedUser;
     }

【问题讨论】:

    标签: ios json swift tuples alamofire


    【解决方案1】:

    您发布的代码使用了一个库,AlamoFire。

    Alamofire 内置了 JSON 支持。只需使用它拥有的 JSON 函数即可。

    如果您想在不使用第三方库的情况下将 JSON 数据转换回对象,请使用 NSJSONSerialization。 'JSONObjectWithData:options:error:' 方法将 JSON 数据作为输入并从该数据返回反序列化的对象。

    编辑:

    您说“...我如何在没有示例的情况下反序列化 [String : AnyObject] 的元组让 user:String = resp.1 as!String”。

    我不知道那是什么意思。 [String:AnyObject] 是字典,不是元组。

    【讨论】:

      【解决方案2】:

      我想通了

      func getUserCredential(username:String,password:String)->UserModel
              {
                  var authenticatedUser  = UserModel()
                  let user = username
                  let password = password
      
                  let credential = NSURLCredential(user: user, password: password, persistence: .ForSession)
      
                  Alamofire.request(.GET, "https://httpbin.org/basic-auth/\(user)/\(password)")
                      .authenticate(usingCredential: credential)
                      .responseJSON { response in
                          switch response.result {
                          case .Success(let JSON):
                              print("JSON :\(JSON)");
                              let responseJson = JSON as! NSDictionary
                              let username:String = responseJson.objectForKey("user")! as! String
                              let authenticated:Bool = responseJson.objectForKey("authenticated")! as! Bool
      
                              authenticatedUser = UserModel(username: username,password:password,isAuthenticated: authenticated,isManager:false)
      
                          case .Failure(let error):
                              print(error)
                          }
                  }
      
                  return authenticatedUser;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-16
        • 1970-01-01
        • 1970-01-01
        • 2019-09-15
        • 2018-09-16
        • 1970-01-01
        • 2010-10-21
        • 1970-01-01
        相关资源
        最近更新 更多