当前位置:  开发笔记 > 前端 > 正文

带有变量的NSURL中的空格不会加载

如何解决《带有变量的NSURL中的空格不会加载》经验,为你挑选了1个好方法。

大家好我有一个客观的c困境:P我对objective-c很新,我试着寻找答案,但无济于事.

所以,这是我的情况.我现在将代码放在这里,否则它将没有那么多意义.我正在放下我需要的东西,这段代码现在不能正常工作,我会在以后找到原因

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM"];
NSString *monthString = [formatter stringFromDate:date];
NSLog(@"MONTH STRING %@", monthString);
NSString *baseURLStr = @"http://www.mysite.ca/example";
NSURL *url = [NSURL URLWithString:[baseURLStr stringByAppendingFormat:@"announcements%20%@%20%d%20carson.ashx", monthString]];

[webView loadRequest:[NSURLRequest requestWithURL:url]];
[NSCalendar release];

所以,这就是问题所在......编码(HTML):stringByAppendingFormat:@"announcements%@%20%d%20example.ashx",monthString,day]];

解码它看起来像这样

stringByAppendingFormat:@"announcements%@%d example.ashx"]];

这应该更容易理解..当我运行%20时,它说"找不到请求的文件"当我用空格("")运行它只是白色,没有任何加载.

我知道URL是正确的,如果我把变量拿出来,这是完全相同的问题,但是当我将%20移回baseURLStr时,它的工作和加载都很好,所以它与HTML有关代码和"stringbyAppendingFormat"字符串.

任何帮助表示赞赏!

谢谢你的时间

-Kyle



1> Jason Cragun..:

每当NSURL在init之后返回nil(0x0)时,它几乎总是与不正确的url字符串相关.它非常挑剔得到一个格式正确的字符串.

我的建议是简单地构建你的字符串,没有任何转义或url编码,然后简单地调用

myUrlString = [myUrlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

这是它的标题声明

- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)enc NS_AVAILABLE(10_3, 2_0);

这样,我总是知道我将它格式化为NSURL类想要它的方式.

这是一个例子

NSString *sUrl = @"http://www.myside.ca/example/announcements carson.ashx"; //notice the embedded space
sUrl = [sUrl stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURL *url = [NSURL URLWithString:sUrl];

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有