如何转义要在NSURL中使用的NSString?

Emi*_*sen 11 objective-c nsstring ios

到目前为止我的发送按钮有这个代码:

NSString* urlString = [NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", messageBox.text stringByAddingPercentEscapesUsingEncoding : NSUFT8StringEncoding];
NSURL *add = [NSURL URLWithString:urlString];
Run Code Online (Sandbox Code Playgroud)

但是我确实收到错误"预期":'

Dan*_*n F 19

您需要分隔两个字符串构造调用

NSString* urlString = [[NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", messageBox.text] stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding];
NSURL *add = [NSURL URLWithString:urlString];
Run Code Online (Sandbox Code Playgroud)

  • 这个答案实际上不是最好的答案.您应该只转义单个参数值,而不是整个URL.你想:`NSString*urlString = [NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@ ", [messageBox.text stringByAddingPercentEscapesUsingEncoding:NSUFT8StringEncoding]];` (7认同)

rma*_*ddy 7

正确的方法是不要逃避整个URL.您应该只转义单个参数值.

NSString* urlString = [NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", [messageBox.text stringByAddingPercentEscapesUsingEncoding : NSUFT8StringEncoding]];
Run Code Online (Sandbox Code Playgroud)

更好的是,为了便于阅读和调试,请执行以下操作:

NSString *escapedText = [messageBox.text stringByAddingPercentEscapesUsingEncoding:NSUFT8StringEncoding];
NSString* urlString = [NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", escapedText];
Run Code Online (Sandbox Code Playgroud)