2015-07-04 17 views
9

I http arama yapmak için kendi sınıf var ama şimdi iOS9 bu yöntem eskimiştir: Yeni test etmek çalışıyorumkaldırılan özellikler: 'sendAsynchronousRequest: Sıra: completionHandler:' iOS9

[NSURLConnetion sendAsynchronousRequest:queue:completionHandler:]

Bu yöntemi bulamadığı için Xcode bir hata verir. kaldırılan çizgi ile

Xcode derleyici uyarısı: Yeni yöntem ile

'sendAsynchronousRequest:queue:completionHandler:' is deprecated: first deprecated in iOS 9.0 - Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h 

Hata:

No known class method for selector 'dataTaskWithRequest:completionHandler:' 

Yöntem:

-(void)placeGetRequest:(NSString *)action withHandler:(void (^)(NSURLResponse *response, NSData *data, NSError *error))ourBlock { 

    NSString *url = [NSString stringWithFormat:@"%@/%@", URL_API, action]; 


    NSURL *urlUsers = [NSURL URLWithString:url]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:urlUsers]; 

    //[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:ourBlock]; 
    [NSURLSession dataTaskWithRequest:request completionHandler:ourBlock]; 
} 

fikrin var mı?

cevap

16

dataTaskWithRequest:completionHandler: bir örnek yöntem değil, bir sınıf yöntemidir. Eğer destek taleplerini de kurmak daha sonra bir oturum kullanabilir ve,

[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:ourBlock]; 
+0

Çalışıyor :) Ancak, belirli bir oturum yapılandırmak gerekli veya önerilir mi? – EnriMR

+1

@EnriMR Kasanıza bağlı. Şimdiye kadar 'NSURLConnection' kullandığınız için paylaşılan oturumu kullanabilirsiniz. Apple, iOS 7'den bu yana 'NSURLConnection' için dahili olarak kullanıyor. –

+0

Yeni bir oturum yapılandırmak için hangi sınıfın kullanılacağı hakkında daha fazla ayrıntı verebilir misiniz? –

5
[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data,NSURLResponse *response,NSError *error) 
{ 
// Block Body 
}]; 
+1

Leo Natan'ın cevabını kopyalamadınız mı? – slxl

1
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in 

// Code 

} 
task.resume() 
+0

Soru "Objective-C" olarak etiketlendi, ancak bu kod Swift ... –

1

Eğer AFNetworking kütüphanesini kullanıyorsanız: Yeni bir oturumu yapılandırmak veya kullanmak paylaşılan bir ya sahip arkaplan. İki sorun çözüldü Bu yaklaşımı kullanarak:

1) AFNetworking yöntemi

2) isteği işleme bile yapılacaktır kaldırılmış değildir devlet arka plan arasındaki uygulama

Ben benzer sorunlara yardımcı olur umarım . Bu bir alternatif.

İlgili konular