我在通过 Alamofire 发送参数时遇到问题。这是服务器期望的 JSON:
{
“users”:[{“_id”:”1234567”}, {“_id”:”665543”}]
}
现在,在我的 Swift 代码中,这就是我尝试构建上述对象的方式:
let parameters = [“users” : users]
return sendRequest(.PUT, url: “example.com", parameters: parameters)
其中 users 是一个数组。以下是有关用户是什么的更多信息(为了简化,我删除了其他一些继承):
class User : MyBase, CustomStringConvertible {
var name: String
var description : String {
get{
return ["_id" : self._id!].description
}
}
}
class MyBase {
var _id: String?
}
如果我执行 debugPrint(users)
,这就是我得到的:
[“users”: [["_id": "1234567"], ["_id": "665543"]]]
这是执行 Alamofire 操作的 sendRequest 方法:
static func sendRequest(method: Alamofire.Method, url: String, parameters: [String: AnyObject]?) {
Alamofire.request(method, url, parameters: parameters as! [String: [User]], encoding: .JSON)
.validate()
.responseObject { (response: Response<User, NSError>) in
switch response.result {
case .Success(let value):
// do something
case .Failure(let error):
// do something else
}
}
}
它在 Alamofire.request 行上抛出的错误是这样的:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (MyApp.User)’
最终,我得到的是一个用户对象数组,我需要以上述 JSON 格式将其发送到我的服务器。作为 Swift 的新手,我一直在努力解决这个问题,因此非常感谢您的帮助。
最佳答案
问题似乎出在您的 debugPrint(users) 中。您发送到服务器的内容是可选类型。您需要发送字符串
因此,如果您有 self._id,请将其更改为 self._id!
关于ios - 在 Swift Alamofire 中写入的 JSON 类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030943/