2011-10-28 72 views
0

如何在創建具有相同屬性的新實體之前檢查實體是否已經存在?或者CoreData已經足夠聰明而不會創建實體了?在創建新實體之前檢查現有實體

例如,我有一個具有屬性名稱和ID的實體Employee。現在,用戶通過對話屏幕創建一個新員工,但此員工已根據該ID退出(可能有員工具有相同名稱)。我想可以創建一個提取請求,但是我在哪裏放置了這些代碼,我是否需要爲Employee創建一個類來執行此操作?

編輯:後postng我的問題,我發現這個網頁:http://www.macresearch.org/cocoa-scientists-part-xxiii-itunes-ifying-core-data-app這是一種方法來做到這一點?好像我有更多的實體,我正在複製大量的代碼。

回答

0

核心數據將允許您創建除了它們的對象ID之外的所有對象都相同的託管對象。

最簡單的解決方案是禁止重複的員工姓名。當用戶輸入新員工時,他們將通過鍵盤或鼠標觸發事件。在您爲此活動執行的操作方法中,您將首先通過檢查他們輸入的名稱是否與現有名稱相匹配來驗證用戶的輸入。您引用的鏈接給出了您可以使用的獲取請求的示例,但您可能想要調查如何僅獲取匹配對象的數量,這會更有效。如果匹配,則顯示警報。

如果您真的想允許重複的名稱,您可以依靠CoreData分配的objectID來區分條目。但用戶不知道該ID是什麼。因此,您仍然需要檢查名稱匹配並顯示一個確認對話框,詢問用戶他們是否真的打算創建具有相同名稱的單獨員工條目。

+0

謝謝 - 我會繼續並執行該鏈接的代碼,並會查看您的建議。也許我會把它放在一個類別中,這樣我就可以將它用於所有實體。 – Koen

相關問題