2010-10-16 110 views
4

Apple表示,如果你想報告一個GKAchievement但你得到一個網絡錯誤,處理這個問題的最好方法是保存GKAchievement(可能將其添加到數組中),然後定期嘗試報告成就。如何在網絡故障後保存並重試報告GKAchievement?

什麼是拯救成就的最佳地點? NSUserDefaults是否足夠,或者是一個更好的方式屬性列表?

何時和應該多久嘗試報告一次?在應用程序啓動時,或每10分鐘一次?

回答

5

屬性列表只能處理特定類(請參閱"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]; 
+0

的寫作總是正確註銷。閱讀似乎從來沒有工作。有沒有其他方法來加載陣列備份? – 2011-05-09 16:40:17

0

你幾乎可以將其變成NSData的保存任何的屬性列表(從而NSUserDefaults的):archivedDataWithRootObject:

相關問題