我正在开发一款游戏,因为我想连续添加积分,因为我使用了plist但是每当屏幕消失并开始时,plist再次启动。该怎么办?
先谢谢。
答案 0 :(得分:3)
要向Ahmed的答案添加更多信息,您应该在AppDelegate.m中实现三种方法:
<强> 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 和/或<来操纵它EM>的intValue
需要 CheckFirstRun ,因为应用程序首次运行时用户的设备不包含默认plist和初始值,您必须创建初始设置。
答案 1 :(得分:0)
您可以制作AppDelegate变量并将其存储在其中。在申请结束之前,整个申请中仍有可能的范围。
在AppDelegate.h中 例如
NSString *string;
@property(nonatomic, strong) NSString *string;
在AppDelegate.m中
@synthesize string;
在applicationDidFinishLaunchingWithOptions
中string = @"";
然后是你的课程
添加#import "AppDelegate.h"
然后在你的代码中
((AppDelegate *)[UIApplication SharedApplication].Delegate).string = @"1";