2016-04-10 37 views
0

端點不關心網址中是否有空格,但似乎是NSURLNSURL無因爲空格

我得到nilNSURL *url = [NSURL URLWithString:string];每次:

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) { 

我想通過空間到終點,因爲我想獲得的空間了終點。 (即通過「星球大戰」),所以如果我從字符串中刪除了空格,我就會得到「星球大戰」而不是「StarWars」)。

任何想法?

+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,只是需要它的部分(來自兩個文本字段的兩個值)。 – 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

因爲這個答案不是應該如何完成的。該代碼首先不必要地替換了兩位文本中的空格。那麼應該逃脫的所有其他可能的角色呢?然後它在整個URL上不正確地使用'stringByAddingPercentEncodingWithAllowedCharacters'。 – rmaddy

+0

@rmaddy關於'stringByAddingPercentEncodingWithAllowedCharacters'的不當使用'你完全正確 - 這是我的複製粘貼錯誤。我編輯了我的答案,我知道應該沒問題。 謝謝你的警惕 – kamwysoc