Ios openURL方法使用字符串,但不使用包含相同字符串的变量

Ios openURL方法使用字符串,但不使用包含相同字符串的变量,ios,objective-c,Ios,Objective C,编辑:我发现了问题所在,但由于我是新用户,所以还不能发布答案。一旦可以,我将发布我的解决方案 我使用以下代码在iPhone的web浏览器中打开一个链接: NSString *url; NSLog(@"%d", [sender tag]); if([sender tag] == 0) url = [approvedDict objectForKey:@"ig"]; else if([sender tag] == 1) url = [approvedDict objectForK

编辑:我发现了问题所在,但由于我是新用户,所以还不能发布答案。一旦可以,我将发布我的解决方案

我使用以下代码在iPhone的web浏览器中打开一个链接:

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]];

当使用此代码(这是按钮按下的目标动作)时,不会发生任何事情。但是,如果我取NSLog(@“%@”,url)给出的确切字符串,并将其放在最后一行的“url”位置,它就可以工作了。我不知道发生了什么事;有人有线索吗?谢谢。

如果url有任何特殊字符,您需要转义它们

而不是像这样打开url:

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


对于
url
(来自您的
approvedDict
)的所有值都是这种情况吗?是的-这些键都是对作为链接的字符串的引用。如果不知道
url
字符串包含的内容,我们如何提供帮助?
@“google.com”
不是url。这是一个看起来像域名的字符串。有效的URL应该是
@”http://google.com“
。您的描述太模糊了。发布一个实际的代码块,在变量中包含一个无法加载的特定URL。web浏览器现在打开,但Safari永远无法连接到服务器。可能还有其他步骤吗?我不知道你是否能得到Safari未能打开链接的响应。你确定如果你用手打开同一个URL(例如:Mac上的Safari),它会工作吗?
NSString *encodedString = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *urlToOpen = [NSURL URLWithString: encodedString];
[[UIApplication sharedApplication] openURL:urlToOpen];