2013-04-08 97 views
0

我的iOS項目中有兩個版本化的數據模型。核心數據中的版本化數據模型集成

數據模型之間的區別在於較新的模型有一個名爲「new_col」的新字段。

在項目的某些部分,我需要獲取由此「new_col」字段過濾的數據。

所以,我用了下面的代碼。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"new_col = %@", val]; 
[request setPredicate:predicate]; 

NSArray *results = [context executeFetchRequest:request error:&err]; 

我面臨的例外 - 「NSInvalidArgumentException」的,理由是:「在未找到實體的keyPath new_col ...

我知道,這是因爲原來的數據模型。

我認爲我應該將原始數據轉換爲新的數據模型。

我該如何轉換?

回答

0

如果要添加新屬性並希望保持向後兼容性,應指定新屬性的默認值,或者在覈心數據編輯器中將其保留爲「可選」。

完成此操作後,您需要確保啓用自動遷移。有關如何執行此操作的詳細信息,請參閱Implementation of 「Automatic Lightweight Migration」 for Core Data。然後,現有/舊實體將採用默認值(如果已定義)或者如果該屬性是可選的,則爲零。

+0

謝謝。我錯過了最新的數據模型應該由當前版本設置。 – Yun 2013-04-08 15:50:40