对象没有设置到在IOS一个对象的一个 实例

问题描述 投票:-2回答:3

当我打电话从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()
    }
}
ios swift api alamofire
3个回答
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
    ]

0
投票

响应对象不json,您将需要分配值各自变量之前先对其进行序列化。是这样的:

guard let dictionary = try? JSONSerialization.jsonObject(with:responseObject!,options: []) as! [String: AnyObject] else { return }

希望工程。


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 
    }

试试这个,希望能够帮助您。

你可以看到:How to post nested json by SwiftyJson and Alamofire?

另见:Using manager.request with POST

© www.soinside.com 2019 - 2024. All rights reserved.