Какой тип массива для хранения значения int, даже если приложение закрывается / завершает работу iOS

Я пытаюсь подсчитать, сколько снимков экрана сделал пользователь в моем приложении. К сожалению, я новичок в 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]);
}

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

Другие решения

Лучший способ сохранить ценность в приложении, даже если приложение закрыто / закрыто. Пожалуйста, используйте .plist файл, чтобы сохранить значение и получить значение из файла .plist. Это улучшит производительность вашего приложения также без сбоев.

0

По вопросам рекламы [email protected]