我是iOS开发新手,遇到以下问题。
说明: 我有一个由几个迷你游戏组成的应用程序。每个迷你游戏都可以通过应用程序购买。但是迷你游戏的可用性保存在BOOL变量中,如下所示:
_miniGamesArray = [[NSMutableArray alloc] init];
NSMutableDictionary *mutDictMg0 = [NSMutableDictionary dictionaryWithCapacity:3];
[mutDictMg0 setValue:[self.gameAvailabilityMutableArray objectAtIndex:0] forKey:@"GameAvailable"];
[_miniGamesArray addObject:mutDictMg0];
问题:
每次启动应用时,都会从self.gameAvailabilityMutableArray
检查游戏的可用性,该- (NSMutableArray *)gameAvailabilityMutableArray
{
if (!_gameAvailabilityMutableArray)
{
//[_gameAvailabilityMutableArray addObjectsFromArray:@[@1,@0,@0,@0 ,@0,@0,@0,@0]];
_gameAvailabilityMutableArray = [[NSMutableArray alloc] initWithArray:@[@1,@1,@1,@1 ,@1,@1,@1,@1]];
}
return _gameAvailabilityMutableArray;
}
设置为:
@[@1,@1,@0,@0 ,@0,@0,@0,@0]]
当客户购买迷你游戏时,我希望将数组设置为(示例):
{{1}}
试验解决方案: 我试图通过调用iTunes服务器并写入数据来实现该阵列。但是,收到请求的时间比应用程序加载时间长。第二个问题是,如果没有互联网连接,则应用程序崩溃。
我也尝试过使用.plist文件。我不知道为什么,但写入plist文件不会一直改变它的比赛!有时候它有效,有时它不会...有时候应用程序会正确加载值,有时它会将它们与最后的值混合。
问题:
有没有办法存储应用加载到plists旁边时正在检查的永久应用数据?
感谢您的时间。
答案 0 :(得分:1)
您可以使用以下代码将数据保存在NSUserDefaults中:
[[NSUserDefaults standardUserDefaults] setObject:_gameAvailabilityMutableArray forKey:@"gameArray"];
[[NSUserDefaults standardUserDefaults] synchronise];
您可以使用
检索数组_gameAvailabilityMutableArray = [[NSUserDefaults standardUserDefaults] objectForKey:@“gameArray”];
答案 1 :(得分:1)
save your data in NSUserDefaults.then use below conditions for app start first time or handle another conditions.
BOOL iSFirstTime = [[NSUserDefaults standardUserDefaults] boolForKey:@"AppStartFirstTime"];
if (!iSFirstTime) {
NSLog(@"Application start first time");
[[NSUserDefaults standardUserDefaults] setValue:@"ImgDownloaded" forKey:@"ProductIDDef"];
[[NSUserDefaults standardUserDefaults] synchronize];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"AppStartFirstTime"];
}else{
// NSLog(@"we are here");
if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"ProductIDDef"] isEqualToString:@"ImgDownloaded"]) {
NSLog(@"All transaction and Image Downloading has been perform successfully");
}else{
//If any network problem or any thing else then handle here.
}
}
}