保存成就的最佳地点是什么? NSUserDefaults会满足,还是财产清单会更好?
我应该何时以及何时尝试举报?在应用程序启动时,或每10分钟一次?
答案 0 :(得分: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];
答案 1 :(得分:0)
通过将其转换为NSData,您可以将属性列表(以及NSUserDefaults)中的任何内容保存起来:archivedDataWithRootObject: