2011-06-14 126 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