当我从iOS使用Alamofire调用api时出现错误-
对象引用未设置为对象的实例
所有其他API都可以正常工作。不知道它是来自后端。
我调试它并使用po命令检查日志,但是所有参数都随请求而变化。
有人可以提出解决方案吗?
任何快速帮助将不胜感激。
谢谢
代码如下:
let strToken: String = (USER_DEFAULT.value(forKey: "token") as? String)!
let strQuerystring = "token=" + strToken
let parameters: [String: String] = ["FirstName": txtFirstName.text!, "LastName":txtLastName.text!,"Gender":txtGender.text!,"DOB":strDate,"RelationId":strMemberID]
callPostApi(fileName: postAddMember + strQuerystring, parameters: parameters) { responseObject, errorResponse in
if(errorResponse == nil)
{
if let json = responseObject as? NSDictionary
{
let strStatus: Bool = json.value(forKey: "Status") as! Bool
let strMessage: String = json.value(forKey: "Message") as! String
if(strStatus == true)
{
forAlert(strMessage)
_ = self.navigationController?.popViewController(animated: true)
}
else
{
forAlert(strMessage)
}
}
else
{
forAlert("noResponseMessage".localized)
}
}
else
{
forAlert("noResponseMessage".localized)
}
SKActivityIndicator.dismiss()
}
}
答案 0 :(得分:0)
响应对象不是json
,在将值分配给它们各自的变量之前,您需要先对其进行序列化。
像这样的东西:
guard let dictionary = try? JSONSerialization.jsonObject(with:responseObject!,options: []) as! [String: AnyObject] else { return }
希望有效。
答案 1 :(得分:0)
您需要使URLRequest与正文中的参数保持一致,如数据
并按如下所示创建请求:
let auth = "Bearer"+token // or your Authorization type
let url = URL.init(string:urlString)
var request = URLRequest(url: url!)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue(auth, forHTTPHeaderField: "Authorization")
request.httpBody = try! JSONSerialization.data(withJSONObject: parameters)
Alamofire.request(request)
.responseJSON { response in
// Handling your data
}
尝试一下,希望对您有所帮助。
答案 2 :(得分:0)
您不需要序列化parameters
。在Alamofire Docs中,参数的类型必须为Parameters
let parameters: Parameters = [
"foo": "bar",
"baz": ["a", 1],
"qux": [
"x": 1,
"y": 2,
"z": 3
]
]
在您的情况下,import Alamofire
,然后像这样声明parameters
,不要序列化它。:
let parameters: Parameters = [
"FirstName": txtFirstName.text!,
"LastName":txtLastName.text!,
"Gender":txtGender.text!,
"DOB":strDate,
"RelationId":strMemberID
]