大家好我有一个客观的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
每当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];