我有一段時間的問題,我一起砍了一個解決方案,但我正在重溫它,希望找到一個真正的解決方案。不幸的是,這並沒有發生。在覈心數據中,我有很多RSS文章。用戶可以訂閱單個Feed中的單個頻道。問題在於某些Feed提供商在同一Feed的多個頻道中發佈完全相同的文章。所以用戶最終得到同一篇文章的2+版本。我希望保留所有文章,以防用戶退訂包含一個副本但仍保留訂閱另一個頻道的副本,但我只想在可用文章列表中顯示單個文章。CoreData獲取基於不同屬性的對象
爲了識別重複項,我創建了文章文本內容的哈希值,並將其作爲屬性存儲在Core Data(text_hash)中的Article實體上。我原來的想法是,我將能夠製作一個獲取請求,該請求可以基於此屬性上的唯一匹配獲取文章,如SQL查詢。事實證明,情況並非如此(我當時剛剛學習Core Data)。
因此,要破解一個解決方案,我獲取所有文章,我做一個空集,我枚舉獲取結果,檢查散列是否在集合中。如果是,我忽略它,如果不是,我將它添加到集合中,然後將文章ID添加到數組中。當我完成後,我創建一個基於文章ID的謂詞並進行另一次獲取。
這看起來非常浪費和笨拙,不僅我獲取兩次並枚舉結果,因爲最終謂詞基於單獨的文章ID,每次添加新文章時都必須重新運行它。
它現在的作品,但我要工作的這個應用程序的新版本,我想盡一切可能做到這一點。任何幫助表示讚賞,謝謝!
你有你的數據的屬性,它是重複的一樣嗎?假設你有Article.name,對於所有重複項都是一樣的嗎? – Mikael
如果text_hash是相同的,那麼他們被認爲是相同的,所以是的,我有一個屬性Article.text_hash,這就是我用來測試重複的東西 – d370urn3ur
所以如果你有,你可以用這個散列來獲取一個對象。但是你可能想要擺脫其他的東西? – Mikael