iDevice ゲームを開発しており、ローカル プレーヤーのスコアをデバイスに保存したいと考えています。ただし、ローカル プレーヤーは変更される場合があります。たとえば、家族が iPad を共有している場合、ゲームをプレイする前に個別に GameCenter にサインインすることができます。この問題を解決するために、キーがローカル プレーヤーによって決定され、値が GKScore オブジェクトの配列であるディクショナリとしてローカル スコアを格納することにしました。
最初は GKLocalPlayer の共有インスタンスをキーにしようと思ったのですが、NSCopying に準拠していないので、GKLocalPlayer は理想的なキー候補ではありません。私の 2 番目のアイデアは、ローカル プレーヤーの識別子を使用することでしたが、Apple は「プレーヤー識別子文字列の内容について推測しないでください。その形式と長さは変更される可能性があります」と述べています。当然のことながら、ある日魔法のようにプレーヤー ID が変更された場合、プレーヤーがローカル スコアを失うのではないかと心配しています。
私の最終的なアイデアは、ローカル プレイヤーのエイリアスを使用することでした。認証されていないローカル プレーヤーのエイリアス文字列が と等しいことを確認しましたnil
。[NSNull null]
この場合、辞書のキーとして使用しても安全ですか? ローカル プレイヤーのエイリアスが一貫していると仮定しても安全ですか?