2010-09-28 21 views
9

Soy nuevo en el desarrollo de iPhone y Objective-C. Usando ZBar SDK, he desarrollado una aplicación básica que escanea una imagen QR del álbum de fotos y muestra a qué se traduce.Cómo determinar si una cadena es una URL en Objective-C

Quiero saber si hay una manera de tomar esta salida, determinar si es una URL y, si es así, abrirla en un navegador web.

Gracias Zac

Respuesta

22

vuelve URLWithString de NSURL nil si la URL pasado no es válido. Entonces, solo puede verificar el valor de retorno para determinar si la URL es válida.

ACTUALIZACIÓN

Simplemente usando URLWithString: generalmente no ser suficiente, es probable que también desee comprobar si el URL tiene un esquema y una gran cantidad, de lo contrario, las direcciones URL como al:/dsfhkgdsk pasarán la prueba.

Así que probablemente quieren hacer algo como esto:

NSURL *url = [NSURL URLWithString:yourUrlString]; 
if (url && url.scheme && url.host) 
{ 
    //the url looks ok, do something with it 
    NSLog(@"%@ is a valid URL", yourUrlString); 
} 

Si sólo desea aceptar http URL es posible que desee añadir [url.scheme isEqualToString:@"http"].

+0

Gracias por señalarme en la dirección correcta :) lo arregló ahora, necesita mucho más práctica con el objetivo C sin embargo! jaja –

+3

Parece tener una definición libre de lo que es una URL válida. "foo.com" analizará, por lo que probablemente desee comprobar que el objeto resultante tenga una propiedad de esquema. – drewish

+3

no puede confiar solo en URLWithString, porque NSURL * url = [NSURL URLWithString: @ "a"]; te devolveré a. vea http://stackoverflow.com/questions/1471201/how-to-validate-an-url-on-the-iphone –

2

Aquí hay una solución alternativa que encontré. Puedes hacer esto

NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"yourstring"]]; 
bool valid = [NSURLConnection canHandleRequest:req]; 

Fuente: https://stackoverflow.com/a/13650542/2513947

Cuestiones relacionadas