-1

2 つの xml ファイルがあり、それらを正しく解析するとすべてがログに記録されます。ボタン ラベルを xml 配列に接続したいのですが、このエラーが発生します。

  *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** - 
  [__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

 *** First throw call stack:

 (0x1c9b012 0x10d8e7e 0x1c3d0b4 0x30b0 0x101817 0x101882 0x50a25 0x50dbf 0x50f55 0x59f67
  0x1dfcc 0x1efab 0x30315 0x3124b 0x22cf8 0x1bf6df9 0x1c1ef3f 0x1c1e96f 0x1c41734  
 0x1c40f44 0x1c40e1b 0x1e7da 0x2065c 0x26dd 0x2605)

  libc++abi.dylib: terminate called throwing an exception

コードは次のとおりです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    pLabel.textColor = [UIColor blackColor];
    Presentation *p1 = [appDelegate.presentationArray objectAtIndex:0];
    NSLog(@"p1 %@", p1);
    pLabel.text = p1.pLabel;

    p2Label.textColor = [UIColor blackColor];

    //I have error in this line objectAtIndex:1

    Presentation *p2 = [appDelegate.presentationArray objectAtIndex:1];
    NSLog(@"p2 %@", p2);
    p2Label.text = p2.pLabel;


    [yBtn setTag:0];
    [dBtn setTag:1];

}

ここに appDelega のパスリング部分があります: http://pastebin.com/SygRZAGj

XMLParser クラスは次のとおりです: http://pastebin.com/yuFNnFB7

これを実装するのを手伝ってくれませんか、どうすればすべてのファイルを同じ配列に入れることができますか?問題は空の配列が原因ですが、どうすればいいですか?また、この問題をどのように修正すればよいですか?

前もって感謝します!

編集:

一度だけ初期化してから、各プレゼンテーションオブジェクトを同じ配列に次々と追加したいのですが、どうすればいいですか

4

2 に答える 2

2

これ...

app.presentationArray = [[NSMutableArray alloc] init];

...見つけたすべての要素に対して新しい配列を作成します。解析を開始する前に配列を 1 回作成し、プレゼンテーション要素が見つかったら追加します。

于 2012-10-18T13:22:26.913 に答える
0

要素を検索するためにループが繰り返されるたびに、オブジェクトが nil になるため、最後にオブジェクトが 1 つだけになります。

于 2012-10-18T13:20:55.700 に答える