2016-04-10 13 views
0

エンドポイントは、URLにスペースが含まれている場合でも気にしませんが、NSURLと思われます。空白のためNSURLなし

私はNSURL *url = [NSURL URLWithString:string];ためnilを毎回取得:

NSString *string = [NSString stringWithFormat:@"http://endpoint.com/search?one=%@&two=%@", textField1.text, textField2.text]; 
NSURL *url = [NSURL URLWithString:string]; 
NSString *urlAbsolute = [url absoluteString]; 
[theManager GET:urlAbsolute parameters:nil progress:nil success:^(NSURLSessionTask * _Nonnull task, id _Nullable responseObject) { 

私はエンドポイントのうちのスペースを取得したいので、エンドポイントにスペースを渡したいです。 (つまり、「Star Wars」を渡します。文字列からスペースを削除すると、「Star Wars」ではなく「Star Wars」が返されます)。

アイデア?

+0

'NSStringのstringByAddingPercentEncodingWithAllowedCharacters上のいくつかの研究を行います:'。 – rmaddy

+0

@rmaddy私はそれを試しましたが、それをノートに入れようとしていましたが、私が探しているものを想定していても動作させることはできません。私は 'stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]'を試しましたが、動作させることができませんでした。 – Com

+1

あなたの質問を更新して、その方法を試してみてください。 – rmaddy

答えて

1

許容文字で文字列エンコーディングを使用 以下のコードを見つけてください。

NSString *string = [NSString stringWithFormat:@"http://endpoint.com/search?one=%@&two=%@", textField1.text, textField2.text]; 
NSURL *url = [NSURL URLWithString:[string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]]; 
+2

'stringByAddingPercentEncodingWithAllowedCharacters'をURL全体に適用するのではなく、必要な部分だけ(2つのテキストフィールドからの2つの値)を適用しないでください。 – rmaddy

+0

@rmaddyその先端がキーです、私は私の研究でコード化されたURL全体を見たことがあります。大きな大きな助け! – Com

0

このコードを試してみてください。

NSString *firstArgument = [self.textField1.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; 
NSString *secondArgument = [self.textField2.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; 

NSString *string = [NSString stringWithFormat:@"http://endpoint.com/search?one=%@&two=%@", firstArgument, secondArgument]; 
NSURL *url = [NSURL URLWithString:string]; 
NSString *urlAbsolute = [url absoluteString]; 
+0

誰かがダウン投票の答えがなぜ私に説明できますか? – kamwysoc

+0

この回答は、どのように行うべきではないためです。このコードはまず、2ビットのテキスト内のスペースだけを不必要に置き換えます。エスケープする必要がある他のすべての文字はどうですか?そして、それは 'stringByAddingPercentEncodingWithAllowedCharacters'をURL全体に不適切に使います。 – rmaddy

+0

@rmaddy 'stringByAddingPercentEncodingWithAllowedCharacters'の使い方が間違っています。あなたは完全に正しいです。私のコピー貼り間違いでした。私は自分の答えを編集しました、そして正しいことは私が思うはずです。 ご迷惑をおかけしていただきありがとうございます – kamwysoc

関連する問題