首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSRangeException on FetchedResultsController

NSRangeException on FetchedResultsController
EN

Stack Overflow用户
提问于 2012-06-02 04:53:25
回答 1查看 1.1K关注 0票数 1

这可能是一个简单的问题,但我很困惑。

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

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

NSRangeException',原因:'* -_PFBatchFaultingArray objectAtIndex::index (2)超出界限(2)

但是,如果我单击另一个显示屏幕的按钮来添加数据,请在不保存任何内容的情况下将其从屏幕中取消,然后返回到视图--所有屏幕--屏幕工作得非常好。

我甚至尝试用NSLog语句进行调试,如下所示

代码语言:javascript
复制
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行时,为什么要在第三行上抛出一个错误?非常感谢您的帮助和洞察力。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-05 03:22:17

找到了问题和解决方案。下面是所发生的事情

  1. 在我的应用程序的主菜单中,我有两个按钮--一个用于向数据库添加新项,另一个用于查看数据库
  2. 中的所有项--如果我直接从主菜单中查看所有项目而不首先尝试添加某些内容,就会发生上述错误。
  3. 我意识到,如果我转到添加屏幕并从添加屏幕中取消,我仍然在ManagedObjectContext中创建一个对象,但当我取消时没有删除它。因此,系统仍然计算出3行MamagedObjects,但实际上在数据库中只找到了2行提交的代码。
  4. i添加了一行取消按钮代码,从上下文中删除当前的托管对象,从iOS模拟器中删除应用程序,重新编译并运行它--工作起来很有魅力。

您可能有相同的问题--尝试以下步骤来确定您的问题是否类似

  1. 删除模拟器中的应用程序,重新编译并运行它。如果它运行良好,那么上下文和database
  2. Check之间肯定会发生冲突,以确保您正在删除您可能已经创建但未提交的托管对象。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10859889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档