2010-01-11 25 views
27

Encontré un tutorial en la red que usa el comando stringWithContentsOfURL que ahora está en desuso a partir de iPhone OS 3.0. Sin embargo, no puedo descubrir qué debo usar en su lugar y cómo implementarlo.¿Qué es el reemplazo "stringWithContentsOfURL" para el objetivo C?

A continuación se muestra el código que rodea a la línea stringWithContentsOfURL en caso de que lo necesite como referencia.

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
    [addressField.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]]; 
NSArray *listItems = [locationString componentsSeparatedByString:@","]; 

Thanks.

Respuesta

29

Ha sido reemplazado con stringWithContentsOfURL:encoding:error: o stringWithContentsOfURL:usedEncoding:error:.

81

Gracias Greg, sino para todos aquellos otros principiantes Este es un ejemplo

NSError* error = nil; 
NSString* text = [NSString stringWithContentsOfURL:TheUrl encoding:NSASCIIStringEncoding error:&error]; 
if(text) 
{ 
    NSLog(@"Text=%@", text); 
} 
else 
{ 
    NSLog(@"Error = %@", error); 
} 
+0

HI, si no estoy equivocado _text_ no será _FALSE_ o _NIL_ incluso si su servidor devuelve un error interno o algo similar? Este error es más sobre error en la codificación? Apple es realmente riguroso en el manejo de errores de conexión, por lo que mi pregunta es ¿para qué sirve _stringWithContentsOfURL: encoding: error: _ method cuando no puede tratar los errores reall "no disponible"? Gracias. L – luigi7up

+0

@ luigi7up: Supongo que tienes razón. Se devuelve nil si hay un error que no causa la captura de datos de retorno (error de conexión del servidor, error de codificación). Si ocurre un error 404, se devuelve algo de texto (la página de error 404) y el error debe contener el error. No estoy seguro de que eso sea lo que sucede con una conexión de sincronización como esta, pero este es el comportamiento de una conexión asíncrona. – Oliver

+0

¿Esto no muestra advertencias de tipo de puntero incompatibles para cualquier otra persona? ¿Se trata sólo de mí? – Danny

1

A continuación código eliminará el mensaje de advertencia ........ cualquier pregunta, por favor, infórmenos.

- (void) connectedToNetwork 
{ 
    BOOL aflag = ([NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.co.in/"] encoding:NSASCIIStringEncoding error:nil]!=NULL)?YES:NO; 
    if (!aflag) { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Sorry!....You are not connected to network " 
           delegate:self cancelButtonTitle:@"Exit" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 

    } 
}