屏幕消失后存储结果

时间:2013-05-10 04:43:51

标签: iphone

我正在开发一款游戏,因为我想连续添加积分,因为我使用了plist但是每当屏幕消失并开始时,plist再次启动。该怎么办?

先谢谢。

2 个答案:

答案 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";