[英]Can not assign a value of type “Any” to type “String?” Swift 3 (iOS)
我想從服務器獲取令牌,然后將其分配給令牌變量,以便可以將其作為標頭傳遞到.post請求方法中。
var token = ["X-Auth-Token": ""]
分配過程
token["X-Auth-Token"] = response.result.value!
完成此操作后,我得到了錯誤
無法將類型“任何”的值分配給類型“字符串?”
如何繞過或解決此問題?
全班:
import Alamofire
import UIKit
class InitialViewController: UIViewController {
let url = "https://api.sis.kemoke.net/auth/login"
var parameters = ["email": "", "password": ""]
var token = ["X-Auth-Token": ""]
// Parameters textfields
@IBOutlet weak var email: UITextField?
@IBOutlet weak var password: UITextField?
// A method for the login button
@IBAction func loginButton(_ sender: UIButton) {
parameters["email"] = email?.text
parameters["password"] = password?.text
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: nil).responseJSON {
(response) in
print(response.result.value!)
token["X-Auth-Token"] = response.result.value!
}
}
}
我建議這種方法:
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: nil).responseJSON {
(response) in
if let tokenString = response.result.value as? String {
token["X-Auth-Token"] = tokenString
}
}
通過使用if let tokenString = response.result.value as? String
if let tokenString = response.result.value as? String
您將在嘗試將response.result.value
為字符串之前檢查它是否為字符串。
始終嘗試避免顯式拆開這樣的可選內容 :
token["X-Auth-Token"] = response.result.value as! String
如果由於某種原因response.result.value
不是String,則您的應用程序將崩潰。 可選選項的主要目的是保護您免遭此類崩潰的影響。
如果是字符串,則強制轉換為字符串
@IBAction func loginButton(_ sender: UIButton) {
parameters["email"] = email?.text
parameters["password"] = password?.text
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody, headers: nil).responseJSON {
(response) in
print(response.result.value?)
token["X-Auth-Token"] = response.result.value as? String
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.