如何调整NSURLSession类的方法dataTaskWithUrl

我一直在试图修改NSURLSession类的方法dataTaskWithRequest,但不能完成它

extension NSURLSession{ public override class func initialize() { struct Static { static var token: dispatch_once_t = 0 } if self !== NSURLSession.self { return } dispatch_once(&Static.token) { let originalSelector = Selector("dataTaskWithRequest:completionHandler:") let swizzledSelector = Selector("my_dataTaskWithRequest:completionHandler:") let originalMethod = class_getInstanceMethod(self, originalSelector) let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) let didAddMethod = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod)) if didAddMethod { class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod)) } else { method_exchangeImplementations(originalMethod, swizzledMethod) } } } // Swizzled Method func my_dataTaskWithRequest(request: NSURLRequest,completionHandler: (NSData?, NSURLResponse?, NSError?)) -> NSURLSessionDataTask { print("Inside Swizzled Method") return my_dataTaskWithRequest(request,completionHandler: completionHandler) } } 

提前致谢 !!

我不得不把我的数据以JSON(或NSDictionary)格式上传到服务器。
我做了这样的事情

 let urlPath:String = apiURL + apiVersion + url + "?api_key=" + apiKey // OR let urlPath:String = "your url string" let url = NSURL(string: urlPath) let session = NSURLSession.sharedSession() let task = session.dataTaskWithURL(url!, completionHandler: {(data, reponse, error) in println("Task completed") // rest of the function... }) task.resume() 

对于更多或相对答案访问链接
如何在私人方法调配

我希望它可以帮助你

 // i hope it may be help you extension NSURLSession{ public override class func initialize() { struct Static { static var token: dispatch_once_t = 0 } if self !== NSURLSession.self { return } dispatch_once(&Static.token) { let method1: Method = class_getInstanceMethod(self,Selector("dataTaskWithRequest:completionHandler:")); let method2 = class_getInstanceMethod(self, Selector("my_dataTaskWithRequest:completionHandler:")); method_exchangeImplementations(method1, method2); } } // Swizzled Method func my_dataTaskWithRequest(request: NSURLRequest,completionHandler: (NSData?, NSURLResponse?, NSError?)) -> NSURLSessionDataTask { print("Inside Swizzled Method") return my_dataTaskWithRequest(request,completionHandler: completionHandler) } } 
Interesting Posts