0

ポイントを継続的に追加したいという点で、ゲームを開発しています。このためにplistを使用しましたが、画面が消えて開始すると、plistが再び開始されます。どうすればよいですか?

前もって感謝します。

4

2 に答える 2

3

Ahmed の回答にさらに情報を追加するには、AppDelegate.m に次のような 3 つのメソッドを実装する必要があります。

AppDelegate.h

NSNumber *gamescore;

@property(nonatomic, strong) NSNumber *gamescore;


#define UIAppDelegate \
   ((AppDelegate *)[UIApplication sharedApplication].delegate)

AppDelegate.m

@synthesize gamescore;

- (BOOL) checkFirstRun {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSNumber *defaultcheck;
    defaultcheck = [defaults objectForKey:@"GameScore"];
    if (defaultcheck==nil) {
        return TRUE;
    } else {
        return FALSE;
    }
}

- (void) storeGlobalVars {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:gamescore forKey:@"GameScore"];
    [defaults synchronize];
}

- (void) readGlobalVars {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    gamescore = [defaults objectForKey:@"GameScore"];
}


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// ...
    if ([self checkFirstRun]) {
    // first run, lets create basic default values

        gamescore = [NSNumber numberWithInt:0];
        [self storeGlobalVars];
    } else {
        [self readGlobalVars];      
    }
// ...

アプリケーションの後半で、AppDelegate.hをインポートした後、 UIAppDelegate.gamescoreを使用して AppDelegate のプロパティにアクセスできます。

また、 gamescore はNSNumberオブジェクトであることを覚えておく必要があります。 NSNumbernumberWithIntおよび/またはintValueを使用して操作する必要があります。

アプリケーションの最初の実行時にユーザーのデバイスにデフォルトの plist と初期値が含まれていないため、CheckFirstRunが必要です。初期セットを作成する必要があります。

于 2013-05-10T05:53:56.413 に答える
0

AppDelegate 変数を作成して、それらに格納できます。アプリケーションが閉じるまで、アプリケーション全体にスコープが残ります。

たとえば AppDelegate.h で

NSString *string;

@property(nonatomic, strong) NSString *string;

AppDelegate.m 内

@synthesize string;

アプリケーションでDidFinishLaunchingWithOptions

string = @"";

そして、あなたのクラスは追加されます#import "AppDelegate.h"

次に、コードで ((AppDelegate *)[UIApplication SharedApplication].Delegate).string = @"1";

于 2013-05-10T04:51:56.737 に答える