2012-05-18 63 views
3

我最近成功地完成了一個核心數據「輕量級遷移」;但我注意到這需要一點點的努力 - 我想知道什麼是觸發自動遷移的絕對最低限度要求?核心數據輕量級遷移:觸發它需要什麼?

我並不在「什麼樣的數據變化需要遷移,否則你會崩潰」,這是寫了在一些地方術語的意思 - 而是:

「這是一個事物的列表,則必須至少要讓Core Data爲你遷移「。

(FWIW - 下面是我做的事情有些人似乎完全必要的,有些可能不是 - 不知道哪個是哪個?):

  • 編輯 - >添加模型版本(命名並保存)
  • 效用督察 - >版本化的核心數據模型:選擇我的最新型號的版本爲「當前」
  • 增加了我的新表,以最新的核心數據模型
  • 編輯器 - >新建NSManagedObject子類...
  • 因爲我使用mogenerator - 我用它來創建人機和機器文件(經過一些配置使其指向上面創建的新模型文件,隱藏在.xcdatamodeld包內),將它們與在步驟中創建的文件進行交換以上(mogenerator是一個活的保護程序,如果你正在做核心數據)
  • 在我的應用程序的info.plist中,我修改了「Bundle Version String,short」和「Bundle Version」增量。
  • 添加必要的選項的NSDictionary我persistentStoreCoordinator初始化方法([__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType配置:無網址:storeURL選項:optionsDict錯誤:&錯誤])

NSDictionary *optionsDict = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

然後我跑我的新應用超過以前的版本,並檢查,果然,遷移工作,所有都是桃色......但這是很多步驟 - 但是,到目前爲止,它看起來像這是最低要求。

但是,例如,info-plist中的選項有多重要?如果我不更改它們 - 或者 - 如果我只更改它,應用程序仍然會正確遷移嗎?

感謝

回答

2
  • 編輯 - >添加模型版本(命名並保存)
  • 實用督察 - >版本化的核心數據模型:選擇我的最新型號的版本爲「當前」
  • 添加了必要的選項的NSDictionary到我persistentStoreCoordinator初始化方法([__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType配置:無URL:storeURL選項:optionsDict錯誤:&錯誤])

就是你需要的。

相關問題