2012-09-11 128 views
4

想知道是否有一個好方法upsert項目在CoreData dbCoreData - 有沒有一種很好的方法來放置物品?

或者有沒有辦法讓我考慮一個CoreData數據庫作爲一個集合?

我的意思是,如果我插入一個項目到數據庫,並且如果已經有一個相同的冗餘項目,數據庫忽略它。任何方式來方便地做到這一點?或者每次插入時都必須查詢以避免冗餘?

回答

4

否 - 核心數據沒有辦法知道您如何考慮「相同」或「冗餘」項目。這些單詞的定義可能隨着您創建的幾乎所有實體而改變 - 例如,企業中的部門可能具有唯一的名稱,但多個人可以具有相同的名稱(並且經常這樣做)。

但是,您可以利用Core Data的查詢功能,並使用NSPredicate快速查詢,以確定是否存在具有所選標識符的記錄。您可能會將此查詢分解到其自己的方法(可能在您的託管對象子類上),以便您可以方便地調用它。

2

我最近看了這篇文章

https://www.upbeat.it/upsert-in-core-data/

基本上,首先在名稱創建一個約束,那麼你指定的核心數據上下文TrumpMergePolicy。

managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy 
相關問題