我正在尝试初始化一个数组并将一个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];
我认为代码是正确的,我的项目是否存在设置错误?我相信这是导致实际崩溃的初始化,但那里没有任何非标准。
答案 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];
如果不存在数组,那么首先应该先分配然后创建数组吗?