Вы можете перетасовать массив, сохранить его состояние и позицию в массиве.Таким образом, каждый раз, когда вы открываете приложение, это будет новый факт, и вы можете перетасовать, когда все факты были замечены, так что вы должны увидеть каждый факт хотя бы один раз, прежде чем вы увидите какой-либо факт во второй раз.
Затем вы можете сохранить факты в нескольких файлах, назвав область, которую вы хотите.Поэтому, возможно, у вас есть научный файл, файл истории и т. Д. Тогда факты будут отображать только факты, относящиеся к категории.
Я не согласен с реализацией БД SQLite, потому что она требует значительного обслуживания, если только высохраните файл на сервере и получите информацию о БД с некоторыми функциями обновления.
Чтобы перемешать массив, добавьте категорию в свой класс для NSMutableArray в файле заголовка
@interface NSMutableArray (Shuffle)
-(void)shuffle;
@end
В файле реализации добавьте категорию и код:
@implementation NSMutableArray (Shuffle)
-(void)shuffle {
for(int pivot = 0; pivot < [self count]; pivot++) {
int index = arc4random() % [self count];
[self exchangeObjectAtIndex:pivot withObjectAtIndex:index];
}
}
@end
Чтобы сохранить массив и его местоположение:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:arrayOfFacts forKey:@"Array"] //arrayOfFacts is the array that has the facts in it
[defaults setInteger:arrayPosition forKey:@"Array Position"]; //arrayPosition is the fact number you are on
Затем, в вашем viewDidLoad или где бы вы ни находилисьзагрузка ваших объектов, загрузка из NSUserDefaults:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
arrayPosition = [defaults integerForKey:@"Array Position"];
arrayOfFacts = [defaults stringArrayForKey:@"Array"];