2014-06-13 2 views
-3

Éditer: J'ai trouvé ce qui n'allait pas, mais je ne peux pas poster de réponse puisque je suis un nouvel utilisateur. Je posterai ma solution dès que possible.La méthode openURL fonctionne avec une chaîne, mais pas avec une variable contenant la même chaîne

J'utilise ce code pour ouvrir un lien dans le navigateur Web de l'iPhone:

NSString *url; 
NSLog(@"%d", [sender tag]); 
if([sender tag] == 0) 
    url = [approvedDict objectForKey:@"ig"]; 
else if([sender tag] == 1) 
    url = [approvedDict objectForKey:@"yt"]; 
else if([sender tag] == 2) 
    url = [approvedDict objectForKey:@"tw"]; 
else if([sender tag] == 3) 
    url = [approvedDict objectForKey:@"pt"]; 
else if([sender tag] == 4) 
    url = [approvedDict objectForKey:@"fb"]; 
NSLog(@"%@", url); 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]]; 

Lorsque vous utilisez ce code (qui est l'action cible d'un bouton presse), rien ne se passe. Cependant, si je prends la chaîne EXACT donnée par NSLog (@ "% @", url) et le mettre où "url" est dans la dernière ligne cela fonctionne. Je suis perplexe quant à ce qui se passe; Quelqu'un at-il la moindre idée? Merci.

+0

Est-ce le cas pour toutes les valeurs de 'url' (de votre' approvedDict')? – JoeFryer

+0

Oui - Ces clés sont toutes des références à des chaînes qui sont des liens. –

+1

Comment pouvons-nous aider sans savoir ce que contient la chaîne 'url'? –

Répondre

0

Si l'URL a des caractères spéciaux, vous devez les échapper pour cent.

Au lieu d'ouvrir simplement l'URL comme ceci:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: url]]; 

ajouter

NSString *encodedString = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSURL *urlToOpen = [NSURL URLWithString: encodedString]; 
[[UIApplication sharedApplication] openURL:urlToOpen]; 
+0

Le navigateur Web s'ouvre maintenant, mais Safari ne peut jamais se connecter au serveur. Pourrait-il y avoir un autre pas? –

+0

Je ne sais pas si vous pouvez obtenir une réponse que le Safari n'a pas réussi à ouvrir un lien ou non. Etes-vous sûr que si vous ouvrez la même URL à la main (ex: Safari sur votre Mac), cela fonctionne? –

Questions connexes