2017-08-09 54 views
1

我有一個快速的(或一般的iOS)問題1個單一入口已取得的結果控制器:使用在CoreData

我的情景:

我有了化身(除其他事項外的表)在每個單元格中。每個頭像都有一個存在(可用/不可用)。每個單元中其他內容的數據源不受CoreData支持(這是一個限制),並且與用戶(CoreData中的)沒有關係,該用戶提供了頭像照片和呈現。

因此,我將我的頭像視爲一個需要用戶,然後呈現用戶的照片和呈現的視圖。當用戶(在CoreData中)的狀態變化時,需要通知該視圖,以便它可以更新化身上的狀態指示符。 (不要擔心我的代碼結構,我使用MVC,但是我簡化了一些東西以避免對我的場景做長時間描述)。

我的問題:

是不是不好用NSFetchedResultsController(FRC)觀察CoreData 1個單一入口?是否還有其他更適合於此的內容(因爲NSFetchedResultsController非常適合用於表格視圖)?

基本上我會做的是讓頭像使用FRC來偵聽CoreData中用戶的變化。因此每個單元格中的每個化身都會有一個觀察1個用戶的FRC。這樣使用FRC似乎很奇怪。 (不要擔心細胞重複使用,當化身處於細胞再利用狀態時,所有的FRC都會被處置)。

其他選項:

我就可以建立在我的用戶的觀察者(委託)CoreData存儲管理器對象偵聽更改爲特定用戶(存儲管理器用於更新CoreData的條目因此對CoreData用戶實體的所有更新都是這樣),然後當觀察者聽到更改時,它可以通知其與該用戶關聯的代表(這將是頭像)。但這基本上就像製作我自己的FRC一樣。如果表格中的單元重用會變得複雜(因爲每個化身都在表格中的一個單元格中),因爲我經常想要註冊/取消註冊代表。

我能聽用戶存儲的MOC的任何通知有關變更(如NSManagedObjectContextObjectsDidChange),但我會得到用戶更改,並進行篩選。再次,我覺得這與重新實現FRC很相似,但可能效率較低,而且我也可能會遇到單元重用的複雜性。

摘要:

我只是想的最佳方式的意見,聽取更改數據庫中的一個獨特的(用戶ID)項。 FRC是最好的方式,還是有更好的方法?

回答

1

如果您有對用戶模型對象的引用,則可以在其屬性上使用KVO。