0

アプリでいくつかの問題が発生しています。ゲームをプレイして時間が終了すると、サーバーはあなたが作成したスコアを送信します。インターネットがダウンしても、アプリはリクエストを送信しますが、インターネットが再びオンになると、アプリはクラッシュします。コンソールには次のように表示されます。

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

1 に答える 1