使用swift 3.0和;代码8:POST请求和;获取请求

使用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

我正在尝试使用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 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?)