2012-12-30 35 views
0

是否可以在覈心數據持久性存儲中添加一些「幻數」數據?如何在覈心數據永久性存儲中添加「幻數」?

我有一個使用自定義二進制文件格式的舊應用程序。每個文件以5個字節的幻數(假設爲0A 0B 0C 0D 0E)和1個字節的格式版本標識符開頭;之後是實際數據。當用戶試圖打開一個文件的應用程序的現有版本做以下檢查:

  • 如果第5個字節的文件沒有一個神奇的數字匹配,如「文件是用戶得到一個消息不是以該應用程序可以讀取的格式。它可能有錯誤的文件擴展名。「
  • 如果幻數匹配,但版本標識符高於應用程序版本可以讀取的版本,則用戶會收到一條消息,如」該文件是使用較新版本的這個應用程序。您需要升級到新版本。「

我想利用核心數據存儲在新版本的應用程序中,同時仍然使用相同的文件擴展名並保持與舊版應用程序的適當兼容性:嘗試使用舊版本打開使用新版本編寫的文件的用戶應該得到應該升級的消息,而不是其他消息。這可能嗎?如何?

回答

0

NSManagedObjectModel有一個versionIdentifiers,它返回一組標識「包含」模型版本的開發人員定義的字符串。 (記住,遷移到一個新的模型版本時,舊的都包含在模型文件/目錄。)

其實,文檔指出

這個值是爲了用作調試提示幫助您確定合併後創建合併模型的模型。

但你仍然可以使用這個屬性的內容完全用於你的目的。

至於「幻數」,在我看來你試圖在未經用戶同意的情況下使數據存儲格式無效。餿主意。在我看來,你應該選擇另一種設計模式。

+0

感謝您的回答,但我恐怕我不明白。您的答案似乎是關於管理基於Core Data的文件格式的不同版本。但問題是將現有的自定義文件格式(基於核心數據的*而非*)遷移到基於核心數據的格式。這個想法是,每個文件仍然以相同的5個字節的幻數開始,但是不同的1個字節的版本標識符。這樣,用戶在嘗試使用舊版應用程序打開文件時會收到相應的消息。 – Rinzwind

+0

將您的商店轉換爲Core Data是完全不同的問題。只需使用現有邏輯打開存儲並通過記錄將其複製到核心數據記錄即可。 – Mundi

相關問題