![](/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.