Friday, January 13, 2017

Async Request using dataTaskWithRequest

Here is a simple example of Async Request using [NSURLSession dataTaskWithURL].

<span class="pun">-</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">void</span><span class="pun">)</span><span class="pln"> asyncDemo1 </span><span class="pun">{</span><span class="pln"> NSURL </span><span class="pun">*</span><span class="pln">url </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">NSURL </span><span class="typ">URLWithString</span><span class="pun">:@</span><span class="str">"https://mysite.com/sampleData.json"</span><span class="pun">];</span><span class="pln"> </span><span class="typ">NSURLRequest</span><span class="pln"> </span><span class="pun">*</span><span class="pln">request </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="typ">NSURLRequest</span><span class="pln"> requestWithURL</span><span class="pun">:</span><span class="pln">url</span><span class="pun">];</span><span class="pln"> </span><span class="typ">NSURLSession</span><span class="pln"> </span><span class="pun">*</span><span class="pln">session </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="typ">NSURLSession</span><span class="pln"> sharedSession</span><span class="pun">];</span><span class="pln"> </span><span class="typ">NSURLSessionTask</span><span class="pln"> </span><span class="pun">*</span><span class="pln">task </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">session dataTaskWithRequest</span><span class="pun">:</span><span class="pln">request completionHandler</span><span class="pun">:^(</span><span class="typ">NSData</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="typ">_Nullable</span><span class="pln"> data</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NSURLResponse</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="typ">_Nullable</span><span class="pln"> response</span><span class="pun">,</span><span class="pln"> </span><span class="typ">NSError</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="typ">_Nullable</span><span class="pln"> taskError</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> dispatch_async</span><span class="pun">(</span><span class="pln">dispatch_get_global_queue</span><span class="pun">(</span><span class="pln">DISPATCH_QUEUE_PRIORITY_DEFAULT</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">),</span><span class="pln"> </span><span class="pun">^(</span><span class="kwd">void</span><span class="pun">){</span><span class="pln"> </span><span class="com">// ----- Place background thread operations here ----- //</span><span class="pln"> dispatch_async</span><span class="pun">(</span><span class="pln">dispatch_get_main_queue</span><span class="pun">(),</span><span class="pln"> </span><span class="pun">^(</span><span class="kwd">void</span><span class="pun">){</span><span class="pln"> </span><span class="com">// ----- Place async UI update, etc here ----- //</span><span class="pln"> </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">taskError</span><span class="pun">){</span><span class="pln"> </span><span class="typ">NSLog</span><span class="pun">(@</span><span class="str">"taskError is %@"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[</span><span class="pln">taskError localizedDescription</span><span class="pun">]);</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">else</span><span class="pun">{</span><span class="pln"> </span><span class="typ">NSLog</span><span class="pun">(@</span><span class="str">"%@"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">[[</span><span class="typ">NSString</span><span class="pln"> alloc</span><span class="pun">]</span><span class="pln"> initWithData</span><span class="pun">:</span><span class="pln">data encoding</span><span class="pun">:</span><span class="pln">NSUTF8StringEncoding</span><span class="pun">]);</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="pun">});</span><span class="pln"> </span><span class="pun">}];</span><span class="pln"> </span><span class="pun">[</span><span class="pln">task resume</span><span class="pun">];</span><span class="pln"> </span><span class="pun">}</span>

No comments: