2011-06-14 161 views
0
NSString *stringURL=[[NSString alloc] init]; 

stringURL=[stringURL stringByAppendingFormat:kSearchBarURL,text.text]; 

NSString *url = [NSString stringWithString:stringURL]; 

NSData *data1 = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]]; 

NSString *responseids = [[NSString alloc] initWithData:data1 encoding:nil]; 

responseids = [responseids stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"\n\r\t"]]; 

SBJsonParser *parser=[SBJsonParser new]; 

NSData *data = [parser objectWithString:responseids error:nil]; 

NSMutableDictionary *searchURL = (NSMutableDictionary*)data; 

我编写这个我没处理我的代码除外。如何处理异常

做json并调用服务url并加载数据。

当我的服务太低或找不到服务时,应用程序崩溃。

如何办理在这里我的代码异常..

难道我用@try @catch。 或 NSURLConnection用于错误处理。

请帮我一把。

在此先感谢。

回答

0

每当API利用NSError的,你应该使用这个,而不是作为NSError正好为此设计在try ... catch块包裹的东西了。我通常会预留@try,因为我真的无法预测可能会出现什么问题。如果NSError处于混合状态,那么您知道存在潜在的问题,您应该优雅地处理。

更一般地说,你的代码有一些奇怪的东西。您alloc init一个空的NSString,然后通过追加格式创建一个新的字符串。不知道你为什么不使用[NSString stringWithFormat]。获得字符串后,即可创建URL,而不需要NSString *url位。

您还正在使用一个同步调用,我认为这是一个远程服务器。如果/当服务器不可用时,这有可能导致应用程序崩溃。您也不会告诉NSString您希望您的字符串在从NSData中读取时使用哪种编码。根据你的服务器端更好的方法是使用NSString的stringWithContentsOfURL:usedEncoding:error:方法。我会建议你使用各种NSURLConnection回调。看看URL Loading System Programming Guide on Using NSURLConnectionNSURLConnection delegate methods是你想实现这个异步处理。

为了您的修整,你可能有兴趣在NSCharacterSet的+whitespaceAndNewlineCharacterSet方法。

最后,对于你的JSON解析,则可能会在为JSON通过SBJSON解析会喜欢的NSString的是,SBJSON代码添加到的NSString,特别-JSONValue类别,这将给你的字典或数组表示(如适用) 。

HTH

+0

jxpx777非常感谢您的指导。它真的帮我编写代码。 – applelover 2011-06-14 21:50:01