Ios NSURL已在应用程序中停止工作

Ios NSURL已在应用程序中停止工作,ios,ios6.1,Ios,Ios6.1,我编写了一个应用程序,可以下载html文件中的数据,然后从中提取数据。这个应用程序几个月来一直运行良好,但最近几天它停止了 这是代码 NSString* urlString = [@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=" stringByAppendingString:portCode]; urlString = [urlString stringByAppendingString:@

我编写了一个应用程序,可以下载html文件中的数据,然后从中提取数据。这个应用程序几个月来一直运行良好,但最近几天它停止了

这是代码

NSString* urlString = [@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=" stringByAppendingString:portCode];
urlString = [urlString stringByAppendingString:@"&PredictionLength=7"];
NSURL* easyTidesUrl = [NSURL URLWithString:urlString];
NSData* easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl];
当我检查NSURL对象时,url没有正确设置(字符串有错误),NSURL对象显示为。我知道过去也有人问过类似的问题(我尝试过这些解决方案,但在这种情况下它们不起作用),但奇怪的是,这个应用程序运行得很好,现在却没有做任何改动就坏了


这里有更多的代码。。。基本上,停止工作的部分是函数的第一部分

+(void)getTides:(NSMutableArray *)tidalDateArray withPortCode:(NSString*)portCode
{
    NSString *parameter = [portCode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *urlString = [NSString stringWithFormat:@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=%@&PredictionLength=7", parameter];
    NSURL *easyTidesUrl = [NSURL URLWithString:urlString];
    NSData *easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl];

    TFHpple* tidesParser = [TFHpple hppleWithHTMLData:easyTidesHtmlData];

    NSString* easyTidesXPathQueryString = @"//div[@class='HWLWPanel']/table/tr/th[@class='HWLWTableHeaderCell']";
    NSArray* tideDateNodes = [tidesParser searchWithXPathQuery:easyTidesXPathQueryString];

    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];

    NSCalendar *gregorian = [[NSCalendar alloc]
                          initWithCalendarIdentifier:NSGregorianCalendar];

portCode
变量中可能存在一些非法许可证,如空格:

NSString *parameter = [portCode stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *urlString = [NSString stringWithFormat:@"http://easytide.ukho.gov.uk/EASYTIDE/EasyTide/ShowPrediction.aspx?PortID=%@&PredictionLength=7", parameter];
NSURL *easyTidesUrl = [NSURL URLWithString:urlString];
NSData *easyTidesHtmlData = [NSData dataWithContentsOfURL:easyTidesUrl];

Easytide似乎已关闭,因此可能不是API问题

问题看起来很简单,毕竟。。。url本身是错误的-无论是他们更改了它还是它在代码中被更改了,我不知道。。。感谢您的帮助和代码改进…

您是否得到了NSURL*easyTidesUrl nil?不,NSURL对象有内存地址等。因此我假设它已初始化。。。问题似乎出在nsurl.urlStringI上。我尝试了上述地址,但被重定向到错误页面。。。如果你没有修改应用程序,并且它无故中断,那么问题可能出在其他地方。我怀疑网站或主机服务器中可能有更改。url没有空格,但urlString对象中的实际字符串显示为未知类。。。url是:您是否尝试过我的代码,它应该会过滤掉您
startViewController
变量中一些不受支持的特许权。我确实尝试过。。。从portCode创建更安全的参数变量没有什么不同,不幸的是……您能举一个
portCode
变量的例子吗,另外,如果您可以使用
po
打印出
easyTidesUrl
。打印端口代码说明:0131打印easyTidesUrl说明:fr某些原因此url中有一个额外的EasyTide。。。它不在xcode中。。。