![](/img/trans.png)
[英]How do I make what my cell looks like update each time there is a change to the object in NSFetchedResultsController that corresponds to the cell?
[英]Why is my `configureCell:` method called every time I change the value of the object the cell corresponds to? (But I DON'T save it.)
我正在创建一个应用程序,当你选择一个单元格时,你会被一个新的视图用于阅读。 您点击的单元格对应于Core Data存储中的对象(通过NSFetchedResultsController
),该对象被设置为正被搜索的视图的article
属性的值。
到那里之后,我会在阅读文章时移动用户在文章中的位置。 (所以我通过article.position = ...
改变article
的position
属性)
但是,这种情况在读取时经常发生,通常是数百次,每次NSFetchedResultsController
都将更改检测为更新,然后调用configureCell:
NSFetchedResultsController
然后运行该单元的一堆配置。 由于这个configureCell:
方法经常被调用(我只希望它们在返回到表视图时被调用,因为这是唯一需要更新的时间),这导致了相当大的性能损失。
我不明白为什么它会调用它。 我没有使用NSManagedObjectContext
将数据保存到Core Data存储中,为什么它关心? 我只在调用viewWillDisappear
时调用它,表示它们正在离开视图,可能会返回到我想要的表视图!
基本上,我如何让它只调用configureCell:
当它需要/当我要求它将数据写入Core Data时? 它称之为数百次。
如果您没有将Core Data对象的更改持久保存到磁盘,则无关紧要; 对Core Data托管对象的更改是一个更改,因此NSFetchedResultsController会对其进行确认。
通过在viewWillDisappear:
中将viewWillDisappear:
的委托设置为nil
,并在viewDidAppear:
中将其设置回self
,可以避免更新不可见的tableview viewDidAppear:
. 此外,在设置委托后添加performFetch:
.
“隐藏的”NSFetchedResultsController仍将接收在前台视图中对文章对象所做的所有更改,但由于它没有委托,因此将忽略它们。
返回文章列表视图时,它将再次拥有一个委托,并且它将能够对所有更改做出反应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.