【问题标题】:unrecognized selector sent to instance无法识别的选择器发送到实例
【发布时间】: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

标签: iphone ios


【解决方案1】:

看起来 currentBook 是一个字符串或者没有初始化。

【讨论】:

  • 原来它是一个字符串 - 在我向章节/书中添加更多变量之前,我最初有一个更简单的数据结构,并且没有返回并实际上创建了一本书,我认为我有一个...
【解决方案2】:

我可能看错了,但是……

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

如果还没有数组,你不应该先分配然后创建数组吗?

【讨论】:

  • 是的,我应该这样做,而且我确实进行了更改,尽管这不是导致崩溃的原因。 CurrentBook 完全在撒谎,它实际上是一个我在其他地方完全错误设置的字符串。
【解决方案3】:

可以在“if(!currentBook.arrayOfChapters)”行下断点,检查currentBook是否为nil;

"currentBook = [books objectAtIndex:segControl.selectedSegmentIndex];行上打断点 " 检查 segControl.selectedSegmentIndex 是否 >= [books count]

【讨论】:

    猜你喜欢
    • 2019-08-28
    相关资源
    最近更新 更多