您可以对数组进行洗牌,保存其状态以及数组中的位置。这样每次你打开应用程序时,它都会是一个新的事实,当你看到所有的事实时,你可以洗牌,这样你必须至少看到每个事实一次,然后才能第二次看到任何事实。
然后您可以将事实保存在多个文件中,并命名为您想要的区域。所以也许,你有一个科学文件、一个历史文件等。那么事实只会显示特定于该类别的事实。
我不同意 SQLite DB 实现,因为它需要大量维护,除非您将文件保存在服务器上并使用某种刷新功能获取 db 信息。
要打乱数组,请在头文件中为 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"];