在我的游戏中,我将玩家的统计数据保存在我存储在 Documents 目录中的 plist 中。我有一个应该保存的每个统计信息的空字典,命名为“Default_Stats.plist”,这样如果这是第一次加载应用程序,它会将其复制到适当的目录中,以便可以随意加载和覆盖。问题是,每次加载我的应用程序时,它都无法识别“Stats.plist”并用默认统计数据覆盖它,重置玩家所做的每个统计数据......而且很奇怪,它完美地工作在模拟器,但不在设备上。这是我的代码:
在这种方法中,我阅读了统计数据:
- (void) readStatsFromFile{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *statsPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Stats.plist"];
//Check if the file has already been created
if (![[NSFileManager defaultManager] fileExistsAtPath:statsPath]){
[self createStatsList];
}else{
stats = [[NSMutableDictionary dictionaryWithContentsOfFile:statsPath]retain];
}
}
这是我的创建方法:
- (void) createStatsList{
NSString *statsPath = [[NSBundle mainBundle] bundlePath];
statsPath = [statsPath stringByAppendingPathComponent:@"Default_Stats.plist"];
stats = [[NSMutableDictionary dictionaryWithContentsOfFile:statsPath] retain];
[self writeStatsToFile];
}
还有我的写作方法:
- (void) writeStatsToFile{
BOOL ok;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *statsPath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Stats.plist"];
ok = [stats writeToFile:statsPath atomically:YES];
if (!ok) {
NSLog(@"Couldn't write to file");
}else
NSLog(@"Stats written succesfully!");
}
请帮忙,我真的不明白这是怎么回事!我希望我已经把自己说得够清楚了!