0

我正在尝试按照书中的示例代码创建一个表格视图。但它总是崩溃。调试器向我显示信息:

2012-08-03 02:51:09.854 TableView[652:c07] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
*** First throw call stack:
(0x1794022 0x1194cd6 0x1780d88 0xfdd1b7 0x3b24 0x2e62 0xb2c54 0xb33ce 0x9ecbd 0xad6f1 0x56d21 0x1795e42 0x2065679 0x206f579 0x1ff44f7 0x1ff63f6 0x2083160 0x16e84 0x17767 0x26183 0x26c38 0x1a634 0x167eef5 0x1768195 0x16ccff2 0x16cb8da 0x16cad84 0x16cac9b 0x16c65 0x18626 0x1eb2 0x1e25)
terminate called throwing an exception(lldb) 

我不知道这是什么意思。再次抱歉长代码....如有必要,我可以发送整个代码。

网上有人说问题是plist引起的,http://p2p.wrox.com/271591-post2.html 但我无法在Xcode 4.4中修改plist。Xcode在此代码处显示绿色指针

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{
    NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
    cell.textLabel.text = [[object valueForKey:@"timeStamp"] description];
}
4

2 回答 2

2

您的表视图数据源方法(numberOfSectionsInTableView:tableView:numberOfRowsInSection:tableView:cellForRowAtIndexPath:用作self.years数据源。

另一方面,您有一个 fetched results 控制器,它在向您的核心数据存储添加或删除新的“事件”实体时insertRowsAtIndexPaths:...调用。deleteRowsAtIndexPaths:...

所以你在这里混合了两种不适合的东西。发生崩溃是因为您添加了表视图行,但数据源没有相应更改。

于 2012-08-02T20:12:56.823 回答
0

这意味着您正在尝试访问具有 0 个元素的数组的第一个元素。我的猜测是错误出现在您调用的行之一上objectAtIndex

请记住,数组索引从 0 开始!!!

于 2012-08-02T20:01:47.500 回答