以下是我的代码我遇到的问题:
func parseFeedForRequest(request: NSURLRequest, callback: (feed: RSSFeed?, error: NSError?) -> Void)
{
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) { (response, data, error) -> Void in
if ((error) != nil)
{
callback(feed: nil, error: error)
}
else
{
self.callbackClosure = callback
let parser : NSXMLParser = NSXMLParser(data: data!)
parser.delegate = self
parser.shouldResolveExternalEntities = false
parser.parse()
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,从iOS 9开始,这已被弃用,并告诉我使用dataTaskWithRequest.有人可以帮我用dataTask更改sendAsync,我不知道怎么做.
Nil*_*tel 76
使用NSURLSession如下,
对于Objective-C
NSURLSession *session = [NSURLSession sharedSession];
[[session dataTaskWithURL:[NSURL URLWithString:"YOUR URL"]
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
// handle response
}] resume];
Run Code Online (Sandbox Code Playgroud)
对于斯威夫特,
var request = NSMutableURLRequest(URL: NSURL(string: "YOUR URL")!)
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
var params = ["username":"username", "password":"password"] as Dictionary<String, String>
request.HTTPBody = try? NSJSONSerialization.dataWithJSONObject(params, options: [])
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
print("Response: \(response)")})
task.resume()
Run Code Online (Sandbox Code Playgroud)
对于异步查询,来自Apple 文档
与大多数网络API一样,NSURLSession API是高度异步的.它以两种方式之一返回数据,具体取决于您调用的方法:
到传输成功或出错时将数据返回到应用程序的完成处理程序块.
通过在收到数据时调用自定义委托上的方法.
通过在下载到文件完成时调用自定义委托上的方法.
Ank*_*han 16
快速实施
let session = NSURLSession.sharedSession()
session.dataTaskWithRequest(request) { (data, response, error) -> Void in
}
Run Code Online (Sandbox Code Playgroud)
kar*_*rma 10
Swift 3.0
var request = URLRequest(url: URL(string: "http://example.com")!)
request.httpMethod = "POST"
let session = URLSession.shared
session.dataTask(with: request) {data, response, err in
print("Entered the completionHandler")
}.resume()
Run Code Online (Sandbox Code Playgroud)
小智 9
这是swift 2.1版本:
let request = NSMutableURLRequest(URL: NSURL(string: "YOUR URL")!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
let params = ["username":"username", "password":"password"] as Dictionary<String, String>
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(params, options: [])
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
print("Response: \(response)")})
task.resume()
Run Code Online (Sandbox Code Playgroud)