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

mse*_*sec 1 iphone int increment nsnumber ios

我试图以一种简单的方式增加一个数字,不会导致重复或丢失数字.这个数字最终将作为订单号存储在我的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); 
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

int orderNumber;
@property (nonatomic,assign) int orderNumber;
Run Code Online (Sandbox Code Playgroud)

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

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

我的方法是递增确定还是有更好的方法?我使用过int但是我看到其他人使用的是NSNumber,我不确定使用其中一个是否有优点和缺点.

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

Pen*_*One 5

您可以使用NSUserDefaults存储intS和其他基本类型(BOOL,float,NSString,NSArray).

例如,您可以检索int使用

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
int orderNumber = [prefs integerForKey:@"orderNumber"];
Run Code Online (Sandbox Code Playgroud)

然后保存int使用

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:orderNumber  forKey:@"orderNumber"];
Run Code Online (Sandbox Code Playgroud)

必要时,您也可以打电话

   [prefs synchronize];
Run Code Online (Sandbox Code Playgroud)

确保您访问最新信息.如果您int在应用中的多个位置访问此功能,此功能尤其有用.