2010-06-12 46 views
10

Bu çağrı stringwithcontentsofurl zorunda:zaman aşımı stringwithcontentsofurl

[NSString stringWithContentsOfURL:url usedEncoding:nil error:nil]; 

nasıl basit bir zaman aşımı verebilirsin? Konuları veya işlem sıralarını kullanmak istemiyorum (URL'nin içeriği yaklaşık 100 karakterdir), bağlantı yavaş olduğunda çok uzun süre beklemek istemiyorum.

cevap

9

Bu durumda, NSURLConnection sınıf yöntemini kullanarak en iyi durumda olabilirsiniz +sendSynchronousRequest:returningResponse:error:; dizginizi (-initWithData:encoding: kullanarak) başlatabileceğiniz bir veri nesnesi döndürür. Bir NSURLRequest, -initWithURL:cachePolicy:timeoutInterval: yöntemini kullanarak bir zaman aşımı belirtebilir, ardından bu isteği +sendSynchronousRequest:returningResponse:error: ilk parametresi olarak iletebilirsiniz.

+0

Büyük !!, bu sadece idi !! Teşekkürler! – sergiobuj

+1

Buradaki tek sorun, '+ stringWithContentsOfURL: usedEncoding: error: 'ile yaptığınız kodlamanın yerleşik olarak tahmin edilmesini elde etmemenizdir, böylece kendi başınızı döndürmeniz gerekir. –

17

İşte o almak benim: bunu hayal olarak

NSString* link = @"http://example.com"; 
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:link] cachePolicy:0 timeoutInterval:5]; 
NSURLResponse* response=nil; 
NSError* error=nil; 
NSData* data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSString* stringFromServer = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 
+1

Harika! % 100 çalışır –