我正在尝试计算用户在我的应用中制作的屏幕截图数量。不幸的是,我是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]);
}
答案 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值。它还可以在不失败的情况下提高您的应用性能。