2010-06-12 20 views
10

que tiene esta llamada a stringwithcontentsofurl:tiempo de espera stringwithcontentsofurl

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

¿Cómo puedo dar un tiempo de espera que sencilla? No quiero usar hilos o colas de operaciones (el contenido de la url es de unos 100 caracteres), simplemente no quiero esperar demasiado cuando la conexión es lenta.

Respuesta

9

En este caso, es posible que sea mejor que utilice el método de clase NSURLConnection+sendSynchronousRequest:returningResponse:error:; devolverá un objeto de datos con el que puede inicializar la cadena (usando -initWithData:encoding:). Puede especificar un tiempo de espera creando un NSURLRequest usando su método -initWithURL:cachePolicy:timeoutInterval:, luego pase esa solicitud como el primer parámetro de +sendSynchronousRequest:returningResponse:error:.

+0

Gran !!, que era justo lo que imaginaba !! ¡Gracias! – sergiobuj

+1

El único problema con esto es que no se obtiene la adivinación integrada de la codificación que se hace con '+ stringWithContentsOfURL: usedEncoding: error:', por lo que tendrías que hacer la tuya. –

17

Aquí está mi opinión sobre ella:

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

¡Impresionante! Funciona al 100% –