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 回答