如果出现以下错误,任何人都知道如何处理错误代码:
database_flag = [NSString stringWithContentsOfURL:database_flag_query encoding:NSASCIIStringEncoding error:&error];
要解释更多请在下面找到我的代码 基本上我想检查mysql的标志 如果标志为1,那么我从数据库获取流的IP地址 否则我使用当地的一家商店。 唯一的问题是当无法访问mysql服务器时程序卡住!!
database_flag_query = [NSURL URLWithString:@"http://192.168.0.20/iqkradio_stream_ip_flag.php"];
database_flag = [NSString stringWithContentsOfURL:database_flag_query encoding:NSASCIIStringEncoding error:&error];
database_flag = [database_flag stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([database_flag isEqualToString: @"1"])
{
NSLog(@"URL flag is set");
database_url_query = [NSURL URLWithString:@"http://192.168.0.20/iqkradio_stream_ip_url.php"];
database_url = [NSString stringWithContentsOfURL:database_url_query encoding:NSASCIIStringEncoding error:&error];
database_url = [database_url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
url1 = [NSURL URLWithString:[database_url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(database_url);
}
else
{
NSLog(@"URL flag is not set, Reverting to stored value");
url1 = [NSURL URLWithString: [NSString stringWithFormat: @"http://radio.qkradio.com.au:8382/listen.mp3"]];
}
streamer = [[AudioStreamer alloc] initWithURL:url1];
答案 0 :(得分:0)
编辑 - NSURLConnection&超时 - 根据下面的附加信息和评论流,并将信息放入答案(而不是长评论流):
有关超时示例,请参阅此问题here的已接受答案。对于NSURLConnection示例,请查看apple文档here
常规错误处理 -
以下链接可能会有所帮助 - > http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/ErrorHandling/ErrorHandling.html。
“在调用此方法之前,您需要创建一个合适的指针,以便您可以传递其地址:
NSError *anyError;
BOOL success = [receivedData writeToURL:someLocalFileURL
options:0
error:&anyError];
if (!success) {
NSLog(@"Write failed with error: %@", anyError);
// present error to user
}
如果发生错误,writeToURL:...方法将返回NO,并更新anyError指针以指向描述问题的错误对象。
在处理通过引用传递的错误时,重要的是测试方法的返回值以查看是否发生错误,如上所示。不要只是测试错误指针是否设置为指向错误。“
因此,对于您的问题,请尝试添加:
if(!database_flag)
{
//call your error handling function
[myFunction withError: error];
}
修剪database_flag
之前。如果您的连接无效,则需要先处理它,然后再继续使用if([database_flag isEqualToString:...
代码。
如果这不能解决问题,您能否提供一些关于暂停应用程序的错误的位置/内容的信息/日志声明?
希望有所帮助。