使用 NSFetchedResultsController 教程保存表视图状态的质量核心数据

Posted

技术标签:

【中文标题】使用 NSFetchedResultsController 教程保存表视图状态的质量核心数据【英文标题】:Quality Core Data with NSFetchedResultsController tutorial Save Table View State 【发布时间】:2011-11-16 03:45:27 【问题描述】:

我在 nsfetchedresultscontroller 教程中找到了许多核心数据,但没有一个很容易理解,而且大多数都没有按照我的意愿去做。我想要的只是一个添加/删除单元格的表格视图。我已经有了这个完美的工作!我只想在离开应用程序时保存表格视图的状态!请一些人指出一个好的教程的正确方向!谢谢大家!

【问题讨论】:

那么你想根据表格行的删除/添加来更新你的数据库吗? 这正是我想要的! :) 【参考方案1】:

你在看错地方检查UITableView class reference这个方法:

-(NSArray *)visibleCells 返回在接收器中可见的表格单元格。

或者更好:

返回一个索引路径数组,每个索引路径标识接收器中的可见行。 - (NSArray *)indexPathsForVisibleRows

最后

滚动接收器,直到由索引路径标识的行位于屏幕上的特定位置。 - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition Animation:(BOOL)animated

如果我正确理解了您的问题 这些是您需要查看的信息,其余的应该是实现细节。


这不是一个或另一个。 您需要了解这一点, NSFetchedResultsController 的唯一目的是维护数据的集合。UITableViewController 不时打电话给NSFetchedResultsController 并询问它,我需要在这个位置显示什么信息。

在其他时候,UITableViewController 打电话给NSFetchedResultsController 并告诉它,嘿...我有那个东西,有人告诉我删除...我不知道该怎么办那,你能照顾它吗(你必须为此实现so方法)。

但在任何情况下NSFetchedResultsController 都不知道UITableView 的位置,并且它永远不会告诉它去任何地方。总是相反。

所以是的,你应该继续学习 Core Data,它是一个非常有用的工具。

就您的问题而言,当您的应用程序即将进入后台时,您有时间查看可见行的位置并将该信息保存在某处,例如 NSUserDefault。当您返回时,您会读回该数据并告诉表格视图去那里,而不是动画。

【讨论】:

好的,我检查过了!你认为我应该继续为此学习核心数据,还是应该使用这些方法?另外,如果我使用这些方法,我该如何实现呢?文档说它返回一个包含可见行索引的数组。当应用程序关闭和重新打开时,我如何保存这个数组并将其上传到我的表格视图?非常感谢您的回复! 好的,我想我明白了!非常感谢你的帮忙!我将继续学习核心数据,我还将阅读NSFetchedResultsController!希望我能尽快完成这项工作!再次感谢! :)

以上是关于使用 NSFetchedResultsController 教程保存表视图状态的质量核心数据的主要内容,如果未能解决你的问题,请参考以下文章

核心数据保存竞争条件错误

在 Swift 3 中难以配置 NSFetchedResultsController

为啥 beginUpdates/endUpdates 会重置表视图位置以及如何阻止它这样做?

测试使用

第一篇 用于测试使用

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?