gpt4 book ai didi

ios - NSFetchedResultsController :objectAtIndexPath: causes NSInvalidArgumentException

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:44 25 4
gpt4 key购买 nike

我正在使用一些类来处理 Core Data 和远程 JSON 服务之间的同步,并且在其中一个类中,它管理当前在 Core 中的对象数据,我遇到了几次随机崩溃。

方法

 @interface XLLocalDataLoader() <NSFetchedResultsControllerDelegate>

// private properties
@property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;

方法

// get core data object at index path
-(NSManagedObject *)objectAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath row] < [self numberOfRowsInSection:indexPath.section]){
return [self.fetchedResultsController objectAtIndexPath:indexPath];
}
return nil;
}

源代码

源代码位于 GitHub -> XLDataLoader -> XLLocalDataLoader。 .

错误

Fatal Exception: NSInvalidArgumentException Object's persistent store is not reachable from this NSManagedObjectContext's coordinator

已调查

  1. NSFetchedResultsController crashes on objectAtIndexPath?
  2. NSFetchedResultsController objectAtIndexPath crash (EXC_BAD_ACCESS)
  3. NSFetchedResultsController Crash
  4. NSFetchedResultsController objectAtIndex, objectAtIndexPath, indexPathForObject inconsistencies
  5. Deleting last row in a section -> crash, using NSFetchedResultsController

问题

  1. 是否有一些指南可以尝试重现和调试 NSInvalidArgumentException
  2. 对我做错了什么有什么想法吗?

最佳答案

在“加载程序”类中使用获取的结果 Controller 似乎是错误的方法。

抓取结果 Controller 的真正目的是帮助您在表格 View 中显示核心数据内容。显然,正常的用例是在主线程上运行它。

如果您从 Web 服务获取数据并大概在成功处理程序中解析它,这意味着它在不同的线程上。您必须使用单独的上下文(通常是主上下文的子上下文),然后在完成数据操作后保存此上下文。这会将更改推送到主上下文,并且将通过委托(delegate)通知获取的结果 Controller 。

错误消息似乎还表明您没有正确管理上下文。

关于ios - NSFetchedResultsController :objectAtIndexPath: causes NSInvalidArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32652065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com