2017-02-20 22 views
0

Я использую oAuth для входа пользователя.Почему назначенное значение равно нулю?

func getUserInfoResponse(_ response: APIResponse!) { 
    print("----------------------------------------") 
    print("用户资料获取成功:") 
    print(response.jsonResponse) 
    //print(response.jsonResponse["figureurl_qq_2"]) 

    let accessToken = _tencentOAuth.accessToken 
    let nickname = response.jsonResponse["nickname"] as! String! 
    let avatar  = response.jsonResponse["figureurl_qq_1"] as! String! 
    let avatar2  = response.jsonResponse["figureurl_qq_2"] as! String! 
    let urlString:String = "http://www.xxxxxx.com/cloud/app?openid=\(accessToken!)&nickname=\(nickname!)&avatar=\(avatar!)&avatar2=\(avatar2!)" 
    self.wk = WKWebView(frame: self.view.frame) 
    let url = URL(string: urlString)! 
    self.wk.load(URLRequest(url: url)) 
    self.view.addSubview(self.wk) 

} 

и print(urlString) является

http://www.example.com/cloud/app?openid=xxxxxxx32D1E05D95E91881A15A8CDC75&nickname= .&avatar= http://q.qlogo.cn/qqapp/1/90012AB5E745A1B10A6F5F4A14F0B48D/40&avatar2=http://q.qlogo.cn/qqapp/1/90012AB5E745A1B10A6F5F4A14F0B48D/100

когда пользователь Логин, все значения имеют значение, кроме URL и получить эту ошибку:

fatal error: unexpectedly found nil while unwrapping an Optional value

enter image description here

enter image description here

Почему URL-адрес равен нулю, ему присвоено значение. Извините, я новичок в ios и swift3.

+0

Вы проверили, существует ли адрес? Можете ли вы напечатать 'urlString' перед созданием объекта URL-адреса Обратите особое внимание на параметры (openid, nickname, avatar, avatar2). Ответ может быть интересным –

+0

Вы можете напечатать значение 'urlString' на консоли? –

+0

@ sweta.me да. здесь находится urlString http://www.xxxxxx.com/cloud/app?openid=Optional ("xxxxxxxxxxx1E05D95E91881A15A8CDC75") & nickname = Необязательный (".") & avatar = Необязательный ("http://q.qlogo.cn/qqapp /1/90012AB5E745A1B10A6F5F4A14F0B48D/40")&avatar2=Optional("http://q.qlogo.cn/qqapp/1/90012AB5E745A1B10A6F5F4A14F0B48D/100 ") –

ответ

1

Вы должны кодировать URL, прежде чем использовать его

if let urlEncoded = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed){ 
    let url = URL(string: urlEncoded) 
}