0

配列を初期化し、チャプターオブジェクトをブックオブジェクトの配列に追加しようとしていますが、次のエラーでクラッシュします。

2012-07-25 21:41:01.503 Project1 [2364:f803]-[__ NSCFString arrayOfChapters]:認識されないセレクターがインスタンス0x6ad80b0に送信されました2012-07-25 21:41:01.505 Project1 [2364:f803] *キャッチされなかったためにアプリを終了します例外'NSInvalidArgumentException'、理由:'-[__ NSCFString arrayOfChapters]:認識されないセレクターがインスタンス0x6ad80b0に送信されました'

私のコード:

Chapter *myChapter = [[Chapter alloc]init];
myChapter.pageCount = self.TextField2.text;
myChapter.chapterTitle = self.TextField1.text;
if(!currentBook.arrayOfChapters)
{
    currentBook.arrayOfChapters = [[NSMutableArray alloc]init];
}
currentBook = [books objectAtIndex:segControl.selectedSegmentIndex];
[currentBook.arrayOfChapters addObject:myChapter];

コードは正しいと思いますが、プロジェクトに何か問題がありますか?実際のクラッシュを引き起こしているのは初期化だと思いますが、そこには非標準的なものは何もありません。

4

3 に答える 3

1

currentBook が文字列であるか、初期化されていないようです。

于 2012-07-26T01:55:09.340 に答える
1

行 " " にブレークポイントを作成してif(!currentBook.arrayOfChapters)、currentBook が nil かどうかを確認できます。

行にブレークポイントを作成し"currentBook = [books objectAtIndex:segControl.selectedSegmentIndex]; 、segControl.selectedSegmentIndex >= [books count] かどうかを確認します

于 2012-07-26T06:24:11.463 に答える
0

これは私の読み違いかもしれませんが…

    if(!currentBook.arrayOfChapters)
    {
        // creating array for current book
        currentBook.arrayOfChapters = [[NSMutableArray alloc]init]; 
    }

    // reassigning a new book to current book. Are you sure this new one has array of chapters?
    currentBook = [books objectAtIndex:segControl.selectedSegmentIndex]; 

    // trying to access array of chapters
    [currentBook.arrayOfChapters addObject:myChapter]; 

最初に割り当ててから、まだ存在しない場合は配列を作成するべきではありませんか?

于 2012-07-26T02:30:45.103 に答える