2011-04-20 135 views
1

我沒有使用核心數據。爲了簡單起見,假設我有一些以前是NSString類型的數據,現在它們應該是自定義類Person的對象,其中唯一的ivar是類型爲NSString的「名稱」ivar。在應用程序的更新版本中,我希望我的Person對象將其「名稱」設置爲NSString在保存的數據中的任何位置。但是,假設我的人出現在應用程序的許多不同位置,因此告訴它如何單獨處理每個人將是一件痛苦的事情。iOS - 更新新應用程序版本中的數據結構

什麼是處理這個問題的最好方法?特別是,我能做些什麼來解決它在解壓過程中的問題?還是必須通過每個未歸檔的對象並將相應的NSString轉換爲Person對象?

回答

0

您可以創建一個實用程序類,檢查從您的unarchiver返回的值,通過此方法運行它。如果這個值是一個NSString,那麼你可以構造一個新的Person對象,如果不是,那麼只是返回該對象。

+ (Person *)personFromStringOrPersonObject:(id)object { 
    if ([object isKindOfClass:[NSString class]]) { 
     // Construct your Person object 
     Person person = [Person new]; 
     person.name = object; 
     return person; 
    } else { 
     return object; 
    } 
} 
+0

是的,但隨後我必須在任何地方都打電話給我,以解除一個人的身份。不可避免的? – 2011-04-20 02:32:13

+0

是的,我認爲這是不可避免的,但至少用輔助方法做起來更容易。您可能還想將「版本」字段添加到數據文件中,以便您可以更輕鬆地編寫數據的遷移路徑。 – Frank 2011-04-20 04:32:10

+0

接受,因爲它似乎沒有更好的辦法。 – 2011-04-26 03:37:35

相關問題