ポイントを継続的に追加したいという点で、ゲームを開発しています。このためにplistを使用しましたが、画面が消えて開始すると、plistが再び開始されます。どうすればよいですか?
前もって感謝します。
ポイントを継続的に追加したいという点で、ゲームを開発しています。このためにplistを使用しましたが、画面が消えて開始すると、plistが再び開始されます。どうすればよいですか?
前もって感謝します。
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オブジェクトであることを覚えておく必要があります。 NSNumberのnumberWithIntおよび/またはintValueを使用して操作する必要があります。
アプリケーションの最初の実行時にユーザーのデバイスにデフォルトの plist と初期値が含まれていないため、CheckFirstRunが必要です。初期セットを作成する必要があります。
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";