繁体   English   中英

为什么每次更改单元格对应的对象的值时都会调用我的`configureCell:`方法? (但我不保存它。)

[英]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 = ...改变articleposition属性)

但是,这种情况在读取时经常发生,通常是数百次,每次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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM