2012-01-26 13 views
0

これは、クリックするとSafariを開くボタンです。URLに格納されたURLを使用してSafariを起動する

-(IBAction)loginClicked:(id)sender{ 
NSLog(@"loginClicked"); 

NSLog(@"currentSelectedRow = %i", currentSelectedRow); 

loginObj = [appDelegate.loginArray objectAtIndex:currentSelectedRow]; 
NSLog(@"URL = %@", loginObj.loginURL); 

Error-->[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]]; 

} 

エラー:私は

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"www.google.com"]]; 

[[UIApplication sharedApplication]を交換した場合Too many arguments to method call, expected 1, have 27

Safariが起動することができ、Googleに行くと、私のデバッガは、それが思わ以下

2012-01-26 16:04:15.546 Login2[197:707] loginClicked 
2012-01-26 16:04:15.550 Login2[197:707] currentSelectedRow = 0 
2012-01-26 16:04:15.555 Login2[197:707] URL = www.amazon.com 

を示し私がを引っ張ったことは正しく配列されていますが、SafariでURLを開くコードに実装することはできません。

答えて

1
Error-->[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"%@", loginObj.loginURL]]; //Edit this line as 
Correct-->[[UIApplication sharedApplication] openURL:[NSURL URLWithString:loginObj.loginURL]]; 
+0

こんにちはSriさん、ありがとうございます。私はあなたの方法を試して、今ボタンは私の配列のURLからSafariを開くことができます。私の配列に格納されているURLは 'http:// www.amazon.com'ですが、Safariで開かれたものは' www.amazon.com%0a/'です。無効なURLです。アドバイス – at0m87

+0

これを試してください。 loginObj.loginURL = [[loginObj.loginURL stringByReplacingOccurrencesOfString:@ "%0a" withString:@ ""]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:loginObj.loginURL]]; – Tendulkar

+0

は、httpの代わりにhttpsを使用すると違いがありますか?配列のURLを 'https:// www.amazon.com'に変更したような感じです!それは 'http:// www.amazon.com'ではありません。私は一般的にあなたのメソッドが最高で、短くて甘いと思っています。なぜ私の配列にURLが正しく入っていないのですか? – at0m87

1

問題は、あなたが

[NSURL URLWithString:] 

に書式パラメータを渡すしようとしている。しかしURLWithStringメソッドはパラメータのフォーマット取らないということです - iOSの中で文字列を取りませんすべての方法は[NSSString stringWithFormat:]のように動作しますかNSLog()

一般的には、書式設定パラメータを受け入れる場合、somethingWithString:の代わりにという名前が付けられます。 somethingWithString:というメソッドは、書式設定引数を受け入れないと仮定する必要があります。あなたのコードを修正するには

、2つの呼び出しに分割:考えてみるものの

NSString *urlString = [NSSString stringWithFormat:@"%@", loginObj.loginURL]; 
NSURL *url = [NSURL URLWithString:urlsString]; 

、私はあなただけ書いていない理由はわからない:

NSURL *url = [NSURL URLWithString:loginObj.loginURL]; 

ので、実際にはフォーマット文字列で何もしていませんが、最初の引数を吐き出すだけです。

+0

こんにちはニックはこのような詳細で私の質問に答えてくれてありがとう、はいloginObj.loginURLはNSStringとして宣言されています。私はur提案としてコードを変更しました: 'NSString * urlString = [NSString stringWithFormat:loginObj.loginURL]; NSURL * url = [NSURL URLWithString:urlString]; [[UIApplication sharedApplication] openURL:url]; '現在、ウェブサイトは開いていますが、URLはwww.amazon.com%0a%になります/何が間違っている可能性がありますか?配列の私のURLは 'http:// www.amazon.com'です – at0m87

+0

[NSURL URLWithString:loginObj.loginURL];を使用してください。 stringWithFormatは、すべての%が変数のプレースホルダーであるかのように文字列を扱います。文字列に挿入するパラメータがない限り、stringWithFormatは使用しないでください。 –

関連する問題