2011年6月27日 星期一

cocos2d-利用NSUserDefaults保存數值

有時候需要在不同的Scene運用某個變數時,
可以利用NSUserDefaults或是NSData保存起來在另外一個Scene運用,
這裡先只講NSUserDefaults的作法(因為我現在只用過這種XD)
//宣告
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];

//設定
[def setObject:@"123" forKey:@"StringVal"]; //設定字串
[def setInteger:111 forKey:@"IntegerVal"]; //設定數值
//取得
NSString *getString = [[NSUserDefaults standardUserDefaults]objectForKey: @"StringVal"];
int getInteger = [[NSUserDefaults standardUserDefaults]integerForKey: @"IntegerVal"];

它還可以使用NSInteger、float、BOOL、double、NSURL


4 則留言:

  1. 這個應該是 cocoa 本身提供的. 不是使用cocos2D應該也能用..

    回覆刪除
  2. 後來有想到...妳這個是要在程式中不同Scene取用變數值的方式..

    我後來是做一個 變數管理器的類別. 然後放在AppDelegate那, 或是rootViewControl那邊.

    這樣在執行期間,需要存取變數就去找那個管理器就好..

    而我使用NSUserDefaults的地方比較在像做資料儲存 跟 一開始程式時初始化的資料來源.

    回覆刪除
  3. 對了,妳用的這個好像也可以做到像全域變數的用法.

    如果set 後 , 下了 [def synchronize]; 指令

    會把資料存檔, 這樣下次再開起程式時 get取得的會是上次存入的值.

    回覆刪除
  4. 我的手段是建立一個專屬的 singleton object,透過它來存取說 ^^"

    回覆刪除