Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c FetchedResultsController上的NSRangeException_Objective C_Core Data - Fatal编程技术网

Objective c FetchedResultsController上的NSRangeException

Objective c FetchedResultsController上的NSRangeException,objective-c,core-data,Objective C,Core Data,这可能是一个很容易解决的问题,但它却把我难住了 背景: 我有一个非常简单的UITableView,它链接到一个FetchedResultsController。基本上,该表为FetchedResultsController中的每一行填充一行 问题陈述: 如果我点击应用程序上的某个按钮查看所有记录,应用程序会因错误而崩溃 NSRangeException',原因:'*-[\u PFBatchFaultingArray objectAtIndex:]:索引2超出边界2 但是,如果我单击另一个显示屏幕

这可能是一个很容易解决的问题,但它却把我难住了

背景: 我有一个非常简单的UITableView,它链接到一个FetchedResultsController。基本上,该表为FetchedResultsController中的每一行填充一行

问题陈述: 如果我点击应用程序上的某个按钮查看所有记录,应用程序会因错误而崩溃

NSRangeException',原因:'*-[\u PFBatchFaultingArray objectAtIndex:]:索引2超出边界2

但是,如果我单击另一个显示屏幕以添加数据的按钮,则在不保存任何内容的情况下取消此屏幕,并返回“查看所有屏幕”屏幕,该屏幕工作正常

我甚至尝试过用NSLog语句进行调试,您可以在下面看到

2012-06-01 23:37:01.345 TC[35258:fb03] sections : 1
2012-06-01 23:37:43.154 TC[35258:fb03] rows 3
2012-06-01 23:39:29.174 TC[35258:fb03] indexpath <NSIndexPath 0x91180f0> 2 indexes [0, 0]
2012-06-01 23:41:29.041 TC[35258:fb03] indexpath <NSIndexPath 0x903e770> 2 indexes [0, 1]
2012-06-01 23:41:44.015 TC[35258:fb03] indexpath <NSIndexPath 0x904afb0> 2 indexes [0, 2]
2012-06-01 23:41:46.598 TC[35258:fb03] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[_PFBatchFaultingArray objectAtIndex:]: index (2) beyond bounds (2)'

这让我感到困惑——当有3行时,为什么它会在第三行抛出错误?非常感谢您的帮助和见解。谢谢

找到了问题和解决方案。这就是发生的事情

在应用程序的主菜单中,我有两个按钮—一个用于向数据库添加新项,另一个用于查看数据库中的所有项 如果我直接从主菜单查看所有项目而不首先尝试添加内容,则会发生上述错误。 我意识到,如果我转到添加屏幕并取消添加屏幕,我仍然在ManagedObjectContext中创建一个对象,但取消时没有删除它。因此,系统仍然统计了3行MamagedObjects,但实际上在数据库中只找到了2行提交的MamagedObjects。 我在“取消”按钮代码中添加了一行,用于从上下文中删除当前托管对象,从iOS模拟器中删除应用程序,重新编译并运行它,效果非常好。 您可能有相同的问题-请尝试以下步骤以确定您的问题是否相似

从模拟器中删除应用程序,重新编译并运行它。如果工作正常,那么上下文和数据库之间肯定存在冲突 检查以确保您正在删除可能已创建但未提交的托管对象。
就像。。fetchedResultsController中的记录数&您在UITableView中填充的数组中收集的记录数不匹配。数组超出边界我理解这一点,但我不理解当NSLog显示FRC中有3行时,为什么它们不匹配