【发布时间】:2012-07-24 13:30:04
【问题描述】:
我正在尝试初始化一个数组并将一个章节对象添加到一个书籍对象数组中,但它会因错误而崩溃:
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];
我认为代码是正确的,我的项目设置有问题吗?我相信这是导致实际崩溃的初始化,但那里没有任何不标准的东西。
【问题讨论】:
-
你在哪里声明
arrayOfChapters? -
在类书中:@property(nonatomic, strong) NSMutableArray *arrayOfChapters;
-
你在
currentBook = [books objectAtIndex:segControl.selectedSegmentIndex];行之前的任何地方初始化currentBook吗? -
currentBook 是一个局部变量,它在屏幕上的代码行中初始化——就在我检查它是否为空之后。我已将那行代码移到 if 语句上方,但它仍然会因相同的错误而崩溃。
-
您不能引用本身未初始化的项目的属性 (
arrayOfChapters)。你想在开始使用之前检查currentBook。