Apple表示,如果你想報告一個GKAchievement但你得到一個網絡錯誤,處理這個問題的最好方法是保存GKAchievement(可能將其添加到數組中),然後定期嘗試報告成就。如何在網絡故障後保存並重試報告GKAchievement?
什麼是拯救成就的最佳地點? NSUserDefaults是否足夠,或者是一個更好的方式屬性列表?
何時和應該多久嘗試報告一次?在應用程序啓動時,或每10分鐘一次?
Apple表示,如果你想報告一個GKAchievement但你得到一個網絡錯誤,處理這個問題的最好方法是保存GKAchievement(可能將其添加到數組中),然後定期嘗試報告成就。如何在網絡故障後保存並重試報告GKAchievement?
什麼是拯救成就的最佳地點? NSUserDefaults是否足夠,或者是一個更好的方式屬性列表?
何時和應該多久嘗試報告一次?在應用程序啓動時,或每10分鐘一次?
屬性列表只能處理特定類(請參閱"What is a Property List?"),其中GKAchievement
不是其中之一。 NSUserDefaults
使用屬性列表,所以這也是。但是,GKAchievement
確實符合NSCoding
協議,這意味着您可以使用NSKeyedArchiver
將它們輕鬆保存到磁盤。我想創建未報告成果的陣列和讀/寫出來就像這樣:
//Assuming these exist
NSArray * unreportedAchievements;
NSString * savePath;
// Write to disk
[NSKeyedArchiver archiveRootObject:unreportedAchievements toFile:savePath];
// Read from disk
unreportedAchievements = [NSKeyedUnarchiver unarchiveObjectWithFile:savePath];
你幾乎可以將其變成NSData的保存任何的屬性列表(從而NSUserDefaults的):archivedDataWithRootObject:
的寫作總是正確註銷。閱讀似乎從來沒有工作。有沒有其他方法來加載陣列備份? – 2011-05-09 16:40:17