我是 ios 编程新手。现在我无法解释以下奇怪的情况:
let url: String = isFavorite ? "1.1/favorites/create.json" : "1.1/favorites/destroy.json"
post(url, parameters: params, progress: nil, success: { (task, response) -> Void in
let dictionary = response as! NSDictionary
let tweet = Tweet(dictionary: dictionary)
success(tweet)
}, failure: { (task, error) -> Void in
print("like tweet error: \(error.localizedDescription)")
failure?(error)
})
它总是抛出异常:
like tweet error: Request failed: not found (404)
当我尝试如下时就可以了(直接传递 url 值而不是变量):
post("1.1/favorites/create.json", parameters: params, ...
因为错误是404,所以可能是post()方法无法识别该url,我真的不知道它们之间有什么区别?
最佳答案
尝试转换允许的url中的url字符串
var url: String = isFavorite ? "1.1/favorites/create.json" : "1.1/favorites/destroy.json"
url = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
post(url, parameters: params, progress: nil, success: { (task, response) -> Void in
let dictionary = response as! NSDictionary
let tweet = Tweet(dictionary: dictionary)
success(tweet)
}, failure: { (task, error) -> Void in
print("like tweet error: \(error.localizedDescription)")
failure?(error)
})
关于ios - swift 3 调用 AFNetworking 的 post() 时函数参数的一个非常奇怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42593318/