0

任何人都知道当出现以下错误时我如何处理错误代码:

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];
4

1 回答 1

0

编辑 - NSURLConnection 和超时 -基于附加信息和下面的评论流,并将信息放在答案中(而不是长评论流):

有关超时示例,请在此处查看此问题的已接受答案。对于 NSURLConnection 示例,请在此处查看苹果文档

一般错误处理 -

以下链接可能会有所帮助-> 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:...代码之前对其进行处理。

如果这不能解决问题,您能否提供一些信息/日志语句,说明导致您的应用程序停止的错误在哪里/是什么?

希望有帮助。

于 2013-04-13T05:02:14.920 回答