2012年4月9日月曜日

iOS: LeaderboardのScore Format Type

iOS の GameKit.framework で、Leadeboard へスコアを送信する時には int64_t (long long)型を使用します。
この型は、Leaderboard の Score Format Type に Elapsed Time タイプを選んでようが、Fixed Point タイプを選んでいようが同じです。

例えば Elapsed Time - To the Second タイプを選んでいる場合、123456 を送信すると、12:34:56 と表示されます。12時間34分56秒という意味です。
しかし、Elapsed Time - To the hundredth of a Second タイプを選んでいる場合、先の値だと 00:12:34.56 と表示されます。0時間12分34秒56という意味です。

また、int64_t 型を NSUserDefault に保存しようとすると、ダイレクトに保存するメソッドが無いので、一旦、NSNumber 型に変換してやらないとなりません。

こんな感じです。
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (defaults) {
  [defaults setObject:[NSNumber numberWithLongLong:lldata] forKey:@"KeyName"];
}
値を読み出す時は、以下のようになります。
NSNumber *number = [defaults objectForKey:@"KeyName"];
int64_t lldata = [number longLongValue];

Leaderboard に送信した値を NSUserDefault にも保存しておこうと思って、うっかり NSInteger (int)型とかにキャストしてしまうと、値によっては内容が失われてしまうので注意しましょう。

ちなみに int64_t 型を NSLogで表示させるには、以下のようにします。
int64_t lldata = 100;
NSLog(@"%lld",lldata);

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...