Я пытаюсь подсчитать, сколько снимков экрана сделал пользователь в моем приложении. К сожалению, я новичок в Objective C и действительно никогда не работал с различными типами массивов или с тем, как хранить в них вещи.
После создания снимка экрана я хочу вызвать метод screenshotTaken в MLBookMarkDataProvider.m от моего main.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]);
}
Я действительно не знаю, почему вы используете массив для достижения этой цели, я бы просто сохранить целое число в 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"]);
}
Лучший способ сохранить ценность в приложении, даже если приложение закрыто / закрыто. Пожалуйста, используйте .plist файл, чтобы сохранить значение и получить значение из файла .plist. Это улучшит производительность вашего приложения также без сбоев.