2014-03-26 59 views
2

我需要預先填充我的核心數據庫只有一個託管對象。預填充核心數據只有一個託管對象

目前我在AppDelegate中檢查是否是最前一頁時,該應用程序運行,然後添加對象,像這樣:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

BOOL firstTime = [defaults boolForKey:@"firstTime"]; 

if (firstTime) { 
    [dataManager insertManagedObject:myManagedObect]; 

    [defaults setBool:NO forKey:@"firstTime"]; 
    [defaults synchronize]; 
} 

insertManagedObject方法檢查managedObject已經在數據庫。

它工作正常,但我擔心在未來的應用程序更新這可能會導致我一些麻煩,主要是如果我更改我的數據模型,並添加一個新的數據模型版本。

這樣做的最佳方法是什麼?

+0

你想達到什麼?你的問題並不清楚... –

+0

我只需要添加一個條目作爲默認數據在我的模型。我做了像我上面展示的那樣,但是我想知道這種方法是否會在未來的更新中產生麻煩,以及是否有更好的方法來實現這一點。 – douglasd3

+0

爲什麼不執行提取請求以查看商店是否已經包含該託管對象? e ..爲該被管理對象設置一個特定的標識符... –

回答

1

爲什麼不執行提取請求,看商店已有 是否包含該託管對象? e.g設置 該管理對象的特定標識符...

按照我的意見,你可以只設立一個獲取對你的實體要求,看看店裏已經有一個實例吧。

這很容易實現。

如果您需要針對特定​​對象進行查詢,您可以爲您的實體設置屬性標識符(即guid),並使用謂詞來查看具有特定guid的對象是否存在。

如果你分享一些其他的細節,我可以給你其他的建議...

+0

我應該在我的應用程序委託didFinishLaunchingWithOptions中執行此獲取請求嗎? – douglasd3

+0

我不會發佈一個單獨的答案,因爲@ flexaddicted的回答幾乎總結了它。是的,只需在appdelegate中創建一個NSFetchRequest並檢查對象是否存在。 – nsuinteger

+0

@ douglasd3是的,你可以。顯然你需要首先設置核心數據堆棧。 –

相關問題