0

我有一个名为 playerData 的 plist 文件,其中包含索引 0 处的数字对象,指示已完成的最高级别。加载视图后,我读取了整个游戏逻辑中使用的这个对象的整数值。如果玩家赢得比赛,我想增加这个数字并将其写入 plist 文件。这是我的代码(包含在 if 语句中)

levelNumber++;
NSNumber *levelNSNum = [[NSNumber alloc] initWithInteger:levelNumber];
[playerData replaceObjectAtIndex:0 withObject:levelNSNum];
[playerData writeToFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"PlayerData.plist"] atomically:YES];
NSLog(@"%i should be written to file", levelNumber);

日志有效,所以我知道 if 语句的条件已经满足,并且该值与以前在 plist 文件中的值不同,但由于某种原因,该数据没有被覆盖该数据。

我对此比较陌生,所以我可能会犯一个简单而愚蠢的错误,我似乎无法找到答案。感谢您的帮助!

4

1 回答 1

1

您正在尝试写入您的包,该包在安装应用程序后是只读的。您应该改为写入应用沙箱中的某个位置,例如在您的Library/Application Support目录中。(您可以使用- [NSFileManager URLsForDirectory:inDomains:]NSApplicationSupportDirectory 来查找此路径;请务必在尝试写入之前创建目录。)

于 2012-06-30T14:56:48.603 回答