簡體   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