4

Appleは、GKAchievementを報告したいがネットワークエラーが発生した場合、これを処理する最善の方法は、GKAchievementを保存して(場合によってはアレイに追加して)、定期的に成果の報告を試みることです。

成果を保存するのに最適な場所はどこですか?NSUserDefaultsで十分でしょうか、それともプロパティリストの方が適しているでしょうか。

いつ、どのくらいの頻度で報告を試みる必要がありますか?アプリケーションの起動時、または10分ごとのようなものですか?

4

2 に答える 2

5

プロパティリストは、特定のクラスのみを処理できます(「プロパティリストとは」を参照)。これGKAchievementは、の1つではありません。 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];
于 2010-10-16T23:11:28.550 に答える
0

NSDataに変換することで、プロパティリスト(したがってNSUserDefaults)にほとんど何でも保存できます。archivedDataWithRootObject:

于 2011-04-23T18:04:03.037 に答える