2013-08-27 74 views
1

我正在尋找最佳的解決方案來實現這一行爲有一個單一的實體:最佳方式使用Magicalrecord

我有一個實體,稱爲客戶,這將只對核心數據的單個條目,因爲客戶將只有一個。

實現此目的的最佳解決方案是什麼?在創建之前是否每次檢查實體是否存在?

非常感謝

回答

2

如前所述,您可以使用單個對象[NSUserDefaults standardUserDefaults]。

但是,如果你喜歡使用CoreData,這樣寫:

Customer* customer = [Customer MR_findFirst]; 
if (customer != nil) 
{ 
    //do something with it 
} else 
{ 
    [Customer MR_importFromObject:JSONToImport];   
} 

BDW:

MR_importFromObject方法自動檢查是否存在實體,具有特定標識(ID鍵就用你的實體名稱的屬性加上「身份證」(在你的情況下,「customerID」)或名爲「mappedKeyName」的密鑰

如果具有此密鑰的實體已經存在 - 魔法記錄只是更新此實體。

所以,如果你指定該值在你的實體,只寫:

[Customer MR_importFromObject:JSONToImport]; 
+0

這是我正在做的準確方法!謝謝! :) –

0

檢查實體創建一個新的是一個好主意之前就存在。

您可以獲取您的客戶實體類型的所有實體並刪除它們,然後再添加一個新的實體類型爲另一種方法。

您也可以有一個簡單的方法來獲取當前客戶或創建一個,然後更新其所有屬性。

它的種類取決於你如何獲得數據以及你想要發生的相關對象。

+0

計數的實體實例的數量也可以是一個檢查機制。 – Wain

1

如果只有一個實例,最好的解決方案通常是不把它放在覈心數據中。它給你很少,並增加了你所看到的複雜性。將必要的信息保存在屬性列表中,甚至以用戶默認值保存。