2017-09-22 135 views
0

我正在使用NSfetchedResultsController。如何檢測何時完成所有controllerDidChangeContent方法

當所有controllerDidChangeContent方法完成後,我需要將更新發送到CloudKit。 在我的案例中,controllerDidChangeContent方法被調用了好幾次,因爲我從CloudKit接收到了我的tableView中的每條記錄的更新,因此如果我在controllerDidChangeContent中調用了cloudKit更新,則會調用它來更新每行。這是壞的。

是否有可能檢測到controllerDidChangeContent何時完成所有更新並將我的CloudKit發送消息放入內部?

或者也許有另一種方法呢?

回答

0

沒有好的方法來確定所有更新何時完成,因爲沒有對「所有更新」進行有意義的定義。您可以隨時進行新的更新,因此可以隨時爲獲取的結果控制器準備新的更新。

時看到更新對象的具體名單已經完成,你也許可以做到像

  1. 使對象ID的列表,你將更新
  2. 每次讀取的結果控制器接收更新,從列表中刪除受影響的對象的對象ID。
  3. 當列表爲空時,您已完成該組更新。

對於更通用的解決方案,只有在幾秒鐘內沒有收到新更新時,纔可以使用NSTimer觸發更新。步驟如下:

  1. 在您的controllerDidChangeContent中,檢查計時器是否存在。如果沒有,請創建一個。
  2. 將計時器的fireDate設置爲將來5秒(或無論你想要多少)。

每當您進行更新時,您都會一直延遲計時器5秒。如果5秒鐘沒有更新通過,計時器將會啓動。

+0

謝謝你的解釋湯姆! – Adelmaer

相關問題