2016-11-04 13 views
0

こんにちはフォーク私は今映画を検索するAPIを使用していますが、問題はUISearchBarに1つの単語を入力しても動作しますが、別の単語のスペースを入力すると、それはdos'nt work.Near query =%@単一の単語、それは動作しますが、私はスペースで別の単語を入力すると、それはこのコードを参照してくださいませんダッシュをスペースに置き換える方法は?

NSString *movieName=searchBar.text; 
NSString *movieString = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/movie?query=%@&api_key=c4bd81709e87b1209433c49",movieName]; 
NSURL *url=[NSURL URLWithString:movieString]; 
+1

は、私はあなたが[Objective-Cの中の文字列の置換]の20%または+ – Jageen

+1

が重複する可能性を持つスペース(http://stackoverflow.com/questions/668228/string-replacement-in-objective-を交換すべきだと思いますc) –

答えて

0

使用

formattedString = [originalString stringByReplacingOccurrencesOfString:@" " withString:@"-"]; 
0

ます。

NSString *movieName=searchBar.text; 
NSString* replacedMovieName = [movieName stringByReplacingOccurrencesOfString:@" " withString:@"_"]; 

これが役に立ちます。

2

あなたは下のURLエンコードするために

NSString *movieName=searchBar.text; 
movieName = [movieName stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLUserAllowedCharacterSet]]; 
NSString *movieString = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/movie?query=%@&api_key=c4bd81709e87b1209433c49",movieName]; 
NSURL *url=[NSURL URLWithString:movieString]; 
+0

このコードはhttps://をhttps%3A%2F%2F – Jageen

+0

@Jageenと置き換えることも忘れています前のコードではhttps://をエンコードして答えを更新しましたが、今度は映画名のみをエンコードします – Rajat

+1

重要:あなたはあなたのURLに追加する*すべてのパラメータのためにそれを行う必要があります。スペースを入れることができない場合でも、URLには他の文字が含まれていない可能性があります。 – uliwitness

0

ダッシュでスペースを置き換える必要がありませんが、あなたの文字列をコードの例です、あなたの文字列

をエンコードURLへの新しいダッシュとスペースを交換する必要はありません、 NSURLを作成する前に、エスケープ文字の割合をを文字列に追加する必要があります。

使用NSStringクラスメソッド:

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding 

と同様に、あなたは次の操作を行うことができ

NSString *movieName=searchBar.text; 

//This is what you need 
movieName=[movieName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSString *movieString = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/movie?query=%@&api_key=c4bd81709e87b1209433c49",movieName]; 

NSURL *url=[NSURL URLWithString:movieString]; 

または代替

(未最良の方法):

NSString *movieName=searchBar.text; 

//This is what you need 
movieName = [movieName stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 

NSString *movieString = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/movie?query=%@&api_key=c4bd81709e87b1209433c49",movieName]; 

NSURL *url=[NSURL URLWithString:movieString]; 
0
NSString *movieName=searchBar.text; 
movieName = [movieName stringByReplacingOccurrencesOfString:@" " withString:@"-"];//use vice-versa 
NSString *movieString = [NSString stringWithFormat:@"https://api.themoviedb.org/3/search/movie?query=%@&api_key=c4bd81709e87b1209433c49",movieName]; 
NSURL *url=[NSURL URLWithString:movieString]; 
関連する問題