2012-03-28 25 views
3

我即將結束創建我的新項目1.0版。我第一次使用coredata。準備與coredata應用發佈

該應用程序僅使用1個模型,所有數據將由用戶提供(所以我不會在應用程序中加載任何數據)。

當然,我已經在爲不同分支上的應用程序更新工作,並在將來看到數據模型的一些更改。模型上的變化將只包括:

  • 除了實體
  • 除了屬性的現有實體
  • 實體沒有任何彼此的關係。

我已閱讀過:從那裏我接着iPhone app with CoreDataLightweight Migration,在那裏我讀到更新它的模型,如果自動改變是次要的coredatas能力(如果我正確讀出我的變化都包含在那裏)。

NSError *error = nil; 
NSURL *storeURL = <#The URL of a persistent store#>; 
NSPersistentStoreCoordinator *psc = <#The coordinator#>; 
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, 
    [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

BOOL success = [psc addPersistentStoreWithType:<#Store type#> 
        configuration:<#Configuration or nil#> URL:storeURL 
        options:options error:&error]; 
if (!success) { 
    // Handle the error. 
} 

我的問題有以下幾種:

  • 我會在哪裏把這個代碼

    在蘋果遷移文檔我發現自動遷移代碼

    ?我現在發現它的其他信息

  • 我是否假設這段代碼只會在應用的更新版本中有必要?
  • 我是否需要在我的1.0版應用程序上做任何其他準備工作,以便稍後通過&對coredata進行更新,還是我不必在第一個版本中考慮此問題?

回答

1
  1. 我有這樣的代碼的方法

    - (NSPersistentStoreCoordinator *)persistentStoreCoordinator

應該已經有類似的代碼

if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) 

,如果你已經讓Xcode創建核心數據方法。

  1. 此代碼僅在引入新模型的更新中是必需的。

  2. 據我所知,沒有。這就是全部。

+0

如果你添加一個新的模型,你只給它另一個版本ID,並將舊的一個留在應用程序中,一切都由它自己完成? – 2012-03-28 14:29:40

+0

,如果我添加一個屬性到現有的實體 - 如果更新爲默認值,上下文中的所有'舊'對象會更新爲新的默認值? – 2012-03-28 14:30:48

+0

通過選擇現有模型並選擇編輯器>添加模型版本...來添加新模型。對於默認值:我假設是這樣,但我不知道。 – dasdom 2012-03-28 14:34:14