如何在重新运行程序时增加整数并保存以供使用?

时间:2011-10-12 05:21:18

标签: iphone ios int increment nsnumber

我试图以一种简单的方式增加一个数字,这不会导致重复或丢失数字。这个数字最终将作为订单号存储在我的coreData实体的一个字段中,这就是为什么我不能有重复或错过的数字。

我有一个输入订单的视图,当它初始化时,它必须提供正确的订单号,这就是我编码的内容:

-(void) viewDidLoad {
 // If no orders have previously been entered the order number will be changed from 0 to 1
          if (orderNumber == 0) {
          orderNumber = orderNumber + 1;
          }
// If orders have previously been entered the order number will be given the value that has previously been stored in orderNumber
          else orderNumber = orderNumber;


NSLog(@"The Order Number is %d",orderNumber); 
}

当视图上的表单完成后,按下完成按钮,这将完成订单。清除视图上的所有文本字段,并将订单号增加1,以便输入下一个订单。

-(void) doneButtonTapped:(id)sender{
   orderNumber = orderNumber + 1;
   NSLog(@"orderNumber is increased to %d",orderNumber);
}

我的头文件包含以下内容:

int orderNumber;
@property (nonatomic,assign) int orderNumber;

这在应用程序运行时有效但如果我退出应用程序并重新运行它,我的orderNumber将从1开始。

当应用程序再次运行时,如何存储/保存与orderNumber关联的值以便在viewDidLoad中使用?

我的方法是增加确定还是有更好的方法?我使用过int但是我看到其他人使用NSNumber,我不确定是否有优势&使用其中一种的缺点。

任何帮助/建议都将不胜感激。

3 个答案:

答案 0 :(得分:5)

您可以使用NSUserDefaults来存储int和其他基本类型(BOOLfloatNSStringNSArray)。< / p>

例如,您可以使用

检索int
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
int orderNumber = [prefs integerForKey:@"orderNumber"];

然后使用

保存int
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:orderNumber  forKey:@"orderNumber"];

必要时,您也可以致电

   [prefs synchronize];

确保您访问最新信息。如果您要在应用中的多个位置访问此int,这将非常有用。

答案 1 :(得分:1)

-(void) viewDidLoad{

   NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

   //now take an int to store value

   int count = [userDefaults integerForKey:@"my_key"]; 
   // since we didn't stored any value for key "my_key" the above statement returns 0 by default

   //do your stuff by using that variable


  // now to increment and store the updated value ,we have to write following stuff

  [userDefaults setInteger:count+1 forKey:@"my_key"];

  [userDefaults synchronize];
}

答案 2 :(得分:0)

你可以这样使用NSUserDefaults

-(void) viewDidLoad {
 // If no orders have previously been entered the order number will be changed from 0 to 1
    int orderNumber = [[NSUserDefaults sharedDefaults] intForKey:@"orderNumber"];
    if (orderNumber == 0) {
          orderNumber = orderNumber + 1;
          }
// If orders have previously been entered the order number will be given the value that has previously been stored in orderNumber
          else orderNumber = orderNumber;
    [[NSUserDefaults sharedDefaults] setInt:orderNumber ForKey:@"orderNumber"];
    [[NSUserDefaults sharedDefaults] synchronize];

NSLog(@"The Order Number is %d",orderNumber); 
}


-(void) doneButtonTapped:(id)sender{
   orderNumber = orderNumber + 1;
   [[NSUserDefaults sharedDefaults] setInt:orderNumber ForKey:@"orderNumber"];
   [[NSUserDefaults sharedDefaults] synchronize];
   NSLog(@"orderNumber is increased to %d",orderNumber);
}