无法识别的选择器发送到实例

时间:2012-07-26 01:46:52

标签: iphone ios

我正在尝试初始化一个数组并将一个chapter对象添加到一个book对象数组中,但它崩溃了错误:

  

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

我认为代码是正确的,我的项目是否存在设置错误?我相信这是导致实际崩溃的初始化,但那里没有任何非标准。

3 个答案:

答案 0 :(得分:1)

看起来currentBook是一个字符串或未初始化。

答案 1 :(得分:1)

你可以在“if(!currentBook.arrayOfChapters)”行上设一个断点来检查当前的Book是否为零;

"currentBook = [books objectAtIndex:segControl.selectedSegmentIndex];行上设一个断点 “检查segControl.selectedSegmentIndex> = [书籍计数]

答案 2 :(得分: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]; 

如果不存在数组,那么首先应该先分配然后创建数组吗?