我正在將大型plist/XML導入到核心數據中。結構很簡單:假設有人和公司,公司可以有很多人。導入成功,但plist沒有建立關係,所以每次有多個人擁有同一個公司時,插入公司的重複項。在覈心數據平面文件導入期間實現查找或創建
一個潛在的解決之道在於Apple's Core Data docs下「實施查找 - 或 - 創建高效」:
Or if you import "flat" data with no relationships, you can create managed objects for the entire set and weed out (delete) any duplicates before save using a single large IN predicate.
我在這句話的年齡盯着,不能解析它。我不是已經在使用託管對象來導入整個集合嗎?他們暗指的是哪些獲取請求?
算法或澄清將不勝感激。
這聽起來像文件告訴我要避免的。文章說,'這種模式不能很好地擴展。如果您使用這種模式來分析應用程序,那麼通常會發現獲取是循環中更昂貴的操作之一(與僅迭代項目集合相比)。更糟糕的是,這種模式將O(n)問題變成了O(n^2)問題。'這種進口量通常在1000-10000人範圍內。如果性能差異不到一秒鐘,我很高興剛剛實施您的建議。 – spamguy 2010-02-13 21:35:23
這不是你在字典中存儲的人,而是那些應該少得多的公司對象。如果在公司中有多人的情況很少發生,那麼這個解決方案就不能很好地擴展,您可能會想要調用-countForFetch:error:來代替。 – 2010-02-14 05:13:49