2014-03-06 23 views
1

我正在尝试计算用户在我的应用程序中制作的屏幕截图数量。不幸的是,我对Objective C是新手,并且从来没有使用过不同类型的数组或者如何在其中存储事物。即使应用程序被关闭/关闭,什么类型的数组可以存储int值iOS

屏幕捕获后,由我想从我的的main.m类调​​用的方法screenshotTaken在MLBookMarkDataProvider.m(截图得到了拍摄地点)。我想将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]); 
    } 

回答

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"]); 
} 
0

更好的办法送即使您的应用程序关闭/关闭,也会在应用程序中带来价值请使用.plist文件来存储.plist文件的值和回收值。它也会在不失败的情况下提高您的应用性能。