我已經發布了我的應用程序的1.0版本。 1.1版可能會包含某種遷移代碼。爲了說明起見,我們假設它會更新核心數據屬性 - 所有姓氏將被轉換爲大寫。我將在版本1.1中首次啓動時執行此代碼。如何應用多個應用更新?
我是否需要爲所有後續版本保留此代碼?如果用戶跳過1.0並且僅在1.2發佈時更新,那麼是否會自動應用1.1?或者我需要不斷檢查是否要永久更新所有版本中的姓氏?
我已經發布了我的應用程序的1.0版本。 1.1版可能會包含某種遷移代碼。爲了說明起見,我們假設它會更新核心數據屬性 - 所有姓氏將被轉換爲大寫。我將在版本1.1中首次啓動時執行此代碼。如何應用多個應用更新?
我是否需要爲所有後續版本保留此代碼?如果用戶跳過1.0並且僅在1.2發佈時更新,那麼是否會自動應用1.1?或者我需要不斷檢查是否要永久更新所有版本中的姓氏?
您不會發布更新,而是發佈新版本。如果有人從1.0更新到1.2並跳過1.1,那完全是這樣。 1.1將永遠不會被安裝或執行。
編輯:
這裏是一個非常簡單的方法來管理更新的建議。可能不是最優秀的,但它的工作原理。
NSString *lastVersion = [[NSUserDefaults standardUserDefaults]
stringForKey:@"LastVersion"];
NSString *currentVersion = [[NSBundle mainBundle]
objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
if ([self version:lastVersion isSmallerThanVersion:@"1.1"]) {
// update from 1.0 to 1.1 here.
}
if ([self version:lastVersion isSmallerThanVersion:@"1.2"]) {
// update from 1.1 to 1.2 here.
}
if ([self version:lastVersion isSmallerThanVersion:@"1.3"]) {
// update from 1.2 to 1.3 here.
}
[[NSUserDefaults standardUserDefaults]
setObject:currentVersion forKey:@"LastVersion"];
在這個例子中你有4個版本(1.0,1.1,1.2,1.3)和1.3是最新版本。
您可以在每次啓動應用時運行此操作。由於更新應用程序也會終止它,因此可以假設這將在可能的更新後運行。
基本上你從用戶默認加載用戶在此設備上使用的最後一個版本。如果應用程序有史以來第一次啓動,則不會有已知的先前版本,也不會執行任何更新例程,並且當前版本(1.3)將保存爲上次使用的版本。
如果該應用程序與以前的版本(1.2)一起使用,則lastVersion
將爲1.2
,並且僅執行最後一個if
塊。
如果應用程序用1.1版所使用的,但是跳過1.2,並更新至1.3,lastVersion
將是1.1和最後兩個if
塊被順序執行。所以首先你將數據從1.1更新到1.2,然後從1.2更新到1.3。
您應該保留遷移代碼適用於所有版本> 1.0
感謝 - 所以版本500年到10年有假設用戶可以從任何版本1..499進行升級,並處理所有已知的核數據狀態在那時已經存在? –
非常好,是的。但這並不困難。對於每個新版本,您只需實施一個更新程序。看我編輯。 – DrummerB