私は問題に遭遇したときに問題をグーグルで調べることによって、ゆっくりとそして主に迅速に学習しています。
オンラインで調べたところ、次の1つのルールが見つかりました。
**
同期要求を行わないでください&常に非同期要求を行ってください
**
しかし、人々がいる方法はたくさんありますオンラインでリクエストを行うと、どちらが正しいかを判断するのが混乱します。そして、Appleが最近Swift 2をリリースしたので、いくつかのメソッドは非推奨になりました。つまり、ネット上のほとんどの例や回答も非推奨になっています。
現在、以下のコードを使用してリクエストを行っています。これがリクエストを行う正しい方法なのか、それとも非同期なのかわかりません。
let request = NSMutableURLRequest(URL: NSURL(string: "www.domain.com")!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "GET"
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
let _: NSError?
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = session.dataTaskWithRequest(request, completionHandler: {data, response, err -> Void in
UIApplication.sharedApplication().networkActivityIndicatorVisible = true
print("Response: (response)")
let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Body: (strData)")
do {
self.json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableLeaves) as? NSArray
} catch {
}
})
task.resume()
この投稿に対する私の質問は次のとおりです。
- 非同期リクエストの方が優れているのはなぜですか?
- Swift 2で非同期リクエストを行うための手順は何ですか?
非常に役立つサンプルコードを提供できれば。
P.s( で時間を検索した後、ここに投稿していますネットと私はスタックオーバーフローに関するかなりの数の投稿を読んだので、他のスタックオーバーフロー投稿へのリンクを回答として投稿せず、コメントとして投稿してください。 )
ありがとうございました。
回答:
回答№1は5非同期リクエストの方が優れているのはなぜですか?
(おそらく非常に時間のかかる)要求と応答はネットワークを介して行われます。インターフェースをブロックするのは悪いことです。さらに、システムがこれを長時間行うと、ユーザーの目の前でアプリが完全に停止してしまいます。
Swift 2で非同期リクエストを行うための手順は何ですか?
NSURLSessionを使用します。 NSURLSessionを使用しているため、コード内のこの呼び出しは非同期です。
let task = session.dataTaskWithRequest(request, completionHandler:{
data, response, err -> Void in
// this code runs asynchronously...
// ... i.e. later, after the request has completed (or failed)
})