即使应用程序关闭/关闭iOS,也要存储什么类型的数组值

时间:2014-03-06 05:26:20

标签: c++ ios nsuserdefaults nsnumber screen-capture

我正在尝试计算用户在我的应用中制作的屏幕截图数量。不幸的是,我是Objective C的新手,并且从未使用过不同类型的数组或如何在其中存储内容。

在进行屏幕捕获后,我想从我的 main.m 类(获取屏幕截图)中调用 MLBookMarkDataProvider.m 中的screenshotTaken方法。我想将int代码存储在不使用方法/类或应用程序关闭后不会被清除的数组中。

我该如何做到这一点?我认为对于在C中更有经验的人来说,这不是火箭科学,所有代码示例都非常感谢。此致!

main.h

 int code;
 ……

的main.m

- (void)viewDidLoad
 {
 ………..
  self.bookmarkDataProvider = [[MLBookmarkDataProvider alloc] initWithDelegate:self];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenshotTaken) name:UIApplicationUserDidTakeScreenshotNotification object:nil];

 }

- (void) screenshotTaken
 {
 code ++;

 [self.bookmarkDataProvider screenshotTaken:code];
 }

MLBookmarkDataProvider.m

- (void) screenshotTaken : (int) code
{
  // Some code here, the Array(NSUserDefaults) below gets cleared after closing main.m class or shutting down the app :( 

  NSNumber *number = [NSNumber numberWithInt:code];
 [[NSUserDefaults standardUserDefaults] setObject:number forKey:@"ArrayNumber"];

if(Array has more then 5 items… blabla..){

    NSLog(@"Print Array:%@",number);
    // NSLog(@"code:%@",[[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);
  }

2 个答案:

答案 0 :(得分:1)

我真的不知道为什么你会使用数组来完成这样的事情,我只会在NSUserDefualts中保存一个这样的整数。

-(void)increaseScreenshotCount{
    //this will work even the first time when your key does not exist
    //get the value from UserDefaults and increase it ++
    NSInteger CurCount = 0 ;
    CurCount += [[NSUserDefaults standardUserDefaults] integerForKey:@"ScreenShotCount"];
    CurCount++;
    [[NSUserDefaults standardUserDefaults] setInteger:CurCount forKey:@"ScreenShotCount"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    NSLog(@"Current Screenshot Count %d", [[NSUserDefaults standardUserDefaults] integerForKey:@"ScreenShotCount"]);
}

答案 1 :(得分:0)

即使您的应用程序关闭/关闭,更好的方式在应用程序中存储价值。请使用.plist文件存储来自.plist文件的值和retrive值。它还可以在不失败的情况下提高您的应用性能。