我有一个名为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文件中的值不同,但由于某种原因,这些数据没有被写入该数据。
我对此比较陌生,所以我可能会犯一个简单,愚蠢的错误,我似乎无法追查答案。谢谢你的帮助!
答案 0 :(得分:1)
您正在尝试写入您的软件包,在安装该应用程序后该软件包是只读的。您应该在应用程序沙箱中的某个位置写入,例如在Library/Application Support
目录中。 (您可以使用- [NSFileManager URLsForDirectory:inDomains:]
和NSApplicationSupportDirectory来查找此路径;请确保在尝试写入目录之前创建该目录。)