アプリでいくつかの問題が発生しています。ゲームをプレイして時間が終了すると、サーバーはあなたが作成したスコアを送信します。インターネットがダウンしても、アプリはリクエストを送信しますが、インターネットが再びオンになると、アプリはクラッシュします。コンソールには次のように表示されます。
2013-05-31 11:00:34.376 xxxxxxx [1721:1be03] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x3352012 0x2754e7e 0x32f40b4 0xad260 0xacc1b 0xacb95 0xa770c 0x29ce3 0xa743b 0x68e04 0x68b0b 0x874b8 0x27686b0 0x1e1f765 0x32d5f3f 0x32d596f 0x32f8734 0x32f7f44 0x32f7e1b 0x358a7e3 0x358a668 0x1323ffc 0x65a9a 0x28e5 0x1)
libc++abi.dylib: terminate called throwing an exception
誰かが何が悪いのか教えてもらえますか?
編集:
例外ブレークポイントを設定したところ、ここが問題の原因であることがわかりました。これは、パイプで区切られたサーバー応答の解析です。
-(void)parseNextGameScoresStatWithResponse:(NSString *)response{
/*Response
Position|username|totalscore|country|
*/
if(response.length == 0 )
return;
NSString * cuttedString = [response substringFromIndex:1];
NSMutableArray *responsesArray = [NSMutableArray arrayWithArray:[cuttedString componentsSeparatedByString:@"|"]];
if(responsesArray.count != 0)
[responsesArray removeLastObject];
else{
return;
}
// NSLog(@"responsesArray = %@", responsesArray);
self.statsArray = [NSMutableArray arrayWithCapacity:0];
for (int i = 0; i < [responsesArray count]-1; i+=4) {
StatModel *stat = [[StatModel alloc] init];
stat.position = [[responsesArray objectAtIndex:i] intValue];
stat.userName = [responsesArray objectAtIndex:i+1];
stat.totalScore = [[responsesArray objectAtIndex:i+2] intValue];
stat.countryCode = [responsesArray objectAtIndex:i+3];
// NSLog(@"stat of next game scores = %d %@ %d %@",stat.position, stat.userName, stat.totalScore, stat.countryCode);
[self.statsArray addObject:stat];
[stat release];
}
}