使用swift 3.0和;代码8:POST请求和;获取请求
我正在尝试使用AFNetworking&swift 3.0和xcode 8.0解析数据,但我遇到如下错误。下面的代码适用于swift 2.3,但不适用于3.0 或者如果有人知道AFNetworking和swift 3.0使用xcode 8.0进行POST&GET请求,请告诉我。举个简单的例子。 提前感谢 您可以看到下面的错误 但我得到了这样的错误使用swift 3.0和;代码8:POST请求和;获取请求,post,get,swift3,xcode8,Post,Get,Swift3,Xcode8,我正在尝试使用AFNetworking&swift 3.0和xcode 8.0解析数据,但我遇到如下错误。下面的代码适用于swift 2.3,但不适用于3.0 或者如果有人知道AFNetworking和swift 3.0使用xcode 8.0进行POST&GET请求,请告诉我。举个简单的例子。 提前感谢 您可以看到下面的错误 但我得到了这样的错误 cannot convert the value of type (URLSessionDataTask?,NSError)->Void to
cannot convert the value of type (URLSessionDataTask?,NSError)->Void to expected argument type '((URLSessionDataTask?,NSError)->Void)?'
将错误类型从NSERROR更改为error。类型兼容性已从Swift2.3更改为Swift 3.0
func Get()
{
let url = NSURL(string: Webserive.UserProfileInfoList + "/" + String(300))
let request = NSURLRequest(url: url! as URL)
NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main) {(response, data, error) in
self.GetData(data: data! as NSData)
}
}
func GetData(data:NSData){
let dict: NSDictionary!=(try! JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.mutableContainers)) as! NSDictionary
print(dict)
self.PostData()
}
func PostData(){
let parameters : NSMutableDictionary? = [
"UserID": String(300),
"UserProfileID": String(356)]
let manager = AFHTTPSessionManager()
let serializerRequest = AFJSONRequestSerializer()
serializerRequest.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
manager.requestSerializer = serializerRequest
let serializerResponse = AFJSONResponseSerializer()
serializerResponse.readingOptions = JSONSerialization.ReadingOptions.allowFragments
serializerResponse.acceptableContentTypes = ((((NSSet(object: "application/json") as! Set<String>) as Set<String>) as Set<String>) as Set<String>) as Set<String>;
manager.responseSerializer = serializerResponse
manager.post(Webserive.DefaultProfile, parameters: parameters, progress: nil, success: { (task: URLSessionDataTask, responseObject: Any?) in
if (responseObject as? [String: AnyObject]) != nil {
print("responseObject \(responseObject)")
}
}) { (task: URLSessionDataTask?, error: Error) in
print("POST fails with error \(error)")
}
}
func Get()
{
让url=NSURL(字符串:Webserive.UserProfileInfoList+“/”+字符串(300))
let request=NSURLRequest(url:url!作为url)
NSURLConnection.sendAsynchronousRequest(请求作为URLRequest,队列:OperationQueue.main){(响应、数据、错误)在
self.GetData(数据:data!作为NSData)
}
}
func GetData(数据:NSData){
让dict:NSDictionary!=(try!JSONSerialization.jsonObject(使用:data作为数据,选项:JSONSerialization.ReadingOptions.mutableContainers))作为!NSDictionary
打印(dict)
self.PostData()
}
func PostData(){
let参数:NSMutableDictionary?=[
“UserID”:字符串(300),
“UserProfileID”:字符串(356)]
let manager=AFHTTPSessionManager()
让serializerRequest=AFJSONRequestSerializer()
serializerRequest.setValue(“application/x-www-form-urlencoded”,forHTTPHeaderField:“内容类型”)
manager.requestSerializer=serializerRequest
让serializerResponse=AFJSONResponseSerializer()
serializerResponse.readingOptions=JSONSerialization.readingOptions.allowFragments
serializerResponse.acceptableContentTypes=(((NSSet(object:“application/json”)as!Set)as Set)as Set;
manager.responseSerializer=序列化响应
中的manager.post(Webserive.DefaultProfile,参数:参数,进度:nil,成功:{(任务:URLSessionDataTask,响应对象:Any?)
如果(响应对象为?[String:AnyObject])!=nil{
打印(“responseObject\(responseObject)”)
}
}){(任务:URLSessionDataTask?,错误:error)位于
打印(“POST失败,出现错误\(错误)”)
}
}
我也有类似的问题。不知道问题的根源是什么,但您可以通过不指定某些参数的类型来帮助自己,在这种情况下,POST方法调用中的“错误”:
manager.post("http://...", parameters: [:], progress: nil, success: { (operation: URLSessionDataTask, responseObject: Any?) in
print("Success")
}, failure: { (operation: URLSessionDataTask?, error) in
let error = error as? Error
print("Failure, error is \(error?.description)")
})
有了这个代码模式,我可以用Xcode 8.3和Swift 3构建代码
编辑: 如果“无法转换类型的值…”有问题,请检查函数所需的类型 我的问题是,我将错误声明为coredataone,而AFNetworking肯定不会返回该错误类型
class Error: NSManagedObject {
// Insert code here to add functionality to your managed object subclass
}
我需要改变的是:
(operation: URLSessionDataTask?, error: Error?)
致:
请参考链接(),它将帮助您。
(operation: URLSessionDataTask?, error: Error?)
(operation: URLSessionDataTask?, error: Swift.Error?)