2013-05-14 80 views
1

在iOS應用程序的兼容性,我們使用複雜的對象的序列通過的NSKeyedArchiver/NSKeyedUnarchiver來存儲信息和數據。的NSKeyedArchiver/NSKeyedUnarchiver上不同IOS版本

所以應用程序將包括在應用程序包這樣的序列化對象,並且此文件將在一個特定的iOS版本創建(讓我們說的iOS 5.0)

由於應用程序將在不同的iOS版本上運行( > 5.0),甚至在將來的版本中,我們希望確保包含在應用程序包中的原始序列化對象在每個其他iOS(6.1,7.0,...)上都是完全可讀的。

假設複雜的對象序列化是由對象,它們的類都包含在所有這些IOS版本的軟件開發工具包的(爲簡單起見,我們假設沒有折舊會在未來發生的這些類), 我們能否完全確定它將始終與所有iOS兼容?

回答

2

一般情況下,是的。

要絕對100%肯定,你將需要使用所有的自定義對象,然後你必須在存檔/解除存檔過程的完全控制。但是,只要所有類都適當地使用鍵控存檔器的編碼和解碼方法,那麼一切都將在未來兼容。

如果蘋果做過決定要打破這種出於某種原因,你最好的選擇是捕捉所產生的異常,並通知他們將需要獲得升級到應用程序的用戶。

另一種方法是將數據的初始部署以不同的格式(如JSON,可能是壓縮的)存儲起來,然後在應用程序啓動時存儲,如果有現有版本,則使用它,如果沒有,則讀入初始部署數據。

+0

非常感謝,我會按照您的異常捕獲的建議,它的安全 – Gianluca 2013-05-14 08:54:42