【问题标题】:how to prevent a variable from resetting when reopening the app? [duplicate]重新打开应用程序时如何防止变量重置? [复制]
【发布时间】:2012-09-15 19:42:27
【问题描述】:

可能重复:
How to save variables after application shut down?

我正在使用objective-c 在单视图应用程序中制作Iphone 应用程序,我希望能够保持变量记录分数以控制可解锁字符、高分等。

问题是每次我关闭并重新打开应用程序时,变量都会重置。

有谁知道如何制作一个在重新打开时永远不会重置的变量?

【问题讨论】:

    标签: iphone objective-c


    【解决方案1】:

    在 iOS 上,您可以使用 NSUserDefaults 在运行之间存储变量。 请参阅下面的示例代码:

    #define HSMEMORY @"hsMemory"  // used to prevent errors in writing it repeatedly
    
        // Store initial default values. Do this at the beginning of the App like in AppDelegate before the values are used and accessed.
        // This will set the initial value when the App is first run and nothing has been stored in previous runs.
            NSNumber *defaultMemory = [NSNumber numberWithDouble:0.0];
            NSDictionary *appDefaults = [NSDictionary
                                             dictionaryWithObjectsAndKeys:
                                             defaultMemory, HSMEMORY, nil];
            [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
    

    要访问变量,请使用:

    NSNumber *memory = [[NSUserDefaults standardUserDefaults] objectForKey:HSMEMORY];
    

    要重置变量使用:

    [[NSUserDefaults standardUserDefaults] setObject:memory forKey:HSMEMORY];
    

    【讨论】:

      【解决方案2】:

      我相信当您说“变量”时,您的意思是 NSString,因此在这种情况下,您可以使用 NSUserDefaults 来实现这一点。但请记住,NSUserDefaults,顾名思义,应该存储少量数据,所以不要'不要过度使用它。

      保存一个 NSString:

      //Initialize NSUserDefaults
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
      //Store the desired value
      [defaults setObject:@"TEXT TO SAVE OR NSSTRING" forKey:@"CHOOSE A KEY-NAME"];
      //To retrieve the text when the app launch
      NSString *value_retrieved = [defaults objectForKey@"YOUR KEY-NAME"];
      

      保存 BOOL 键

      //Initialize NSUserDefaults
      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
      //Save the Boolean
      [defaults setBool:YES OR NO forKey:@"CHOOSE A KEY-NAME"];
      //Retrieve the Boolean
      [defaults boolForKey:@"YOUR KEY-NAME"];
      

      【讨论】:

        猜你喜欢
        • 2011-05-09
        • 1970-01-01
        • 2011-03-04
        • 2020-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-04
        相关资源
        最近更新 更多