2011-11-14 9 views
10

Intentando convertir una cadena a NSURL y esto no está sucediendo.NSString a NSURL?

barcodeTextLabel.text = foundCode.barcodeString; 
urlToGrab = [NSString stringWithFormat:@"%@", foundCode.barcodeString]; // foundCode.barcodeString is an NSString 

urlToGrab muestra la siguiente "CFStringRef no válido error"

+0

puedo dar u ur código con algunos detalles más como urlToGrab pertenece a Wat tipo de Tipo de datos –

+2

¿Cómo esperas conseguir un NSURL del '+ stringWithFormat: 'método? – Caleb

Respuesta

35

Esta es la forma de crear un NSURL de un NSString:

NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
+1

NSURL es un objeto, por lo que le falta el *. NSURL * url – jomafer

+2

gracias, lo arregló – Dimme

0

Si foundCode.barcodeString es la cadena que desea que la URL, a continuación, (como la respuesta anterior) use el método de clase NSURLURLWithString:(NSString *).

El código debería parecerse a:

NSURL urlToGrab = [NSURL URLWithString:foundCode.barcodeString]; 

Dónde está llegando a su error en jugar? Como es tu código, urlToGrab es una instancia de NSString. Me imagino que obtendría un error como el que describió si intentara realizar una solicitud HTTP en un NSString en lugar de NSURL.

0

Puede usar los siguientes para crear la ruta del archivo a la url.

NSURL *yourURL = [NSURL fileURLWithPath:@"/Users/xyz/Desktop/abc.sqlite"]; 
-1

La respuesta de Swapnali patil funciona, pero voy a agregar una explicación.

Obtendrá un nil si el formato de NSString no se ajusta a los criterios de archivo para NSURL (file:///xxx/file.ext).

Mis necesidades eran cargar una imagen JPG a través de la ruta del archivo URL a nsdata; NSURL * u=[[NSURL alloc] initWithString:fpath] devuelto nil, pero NSURL *yourURL = [NSURL fileURLWithPath:fpath] como en la respuesta mencionada funcionó. Una URL para archivos tendrá el formato file:///users/xxx/pic.jpg y otorgará acceso al disco. NSURL * u=[[NSURL alloc] initWithString:(NSString*) ] también dará objeto nil si NSString es URL web, pero si falta http://