Objc执行时读取和写入plist文件遇到的问题
2017-06-28 12:09
267 查看
以下是本猫保持游戏NPC和物件交互的plist文件:
![](http://img.blog.csdn.net/20151212212224153)
随着游戏和玩家逐步发生互动,玩家会改动人物和物件的交互的状态.这也是RPG游戏最主要的功能.
![](http://img.blog.csdn.net/20151212212357625)
在切换每一个地图时须要将上一个地图发生的改变存储到plist文件里去.
我採用的方法为现将plist文件读入结构对象中,然后改动之,再写会plist文件里.
读入的代码例如以下:
可是在改动mapInfoMDict中的某个子结构时,却错误发生:
意思是在一个不可变的对象上调用可变方法.
原因是尽管上面用了mutbaleCopy,可是这是浅拷贝,仅仅有第一层的对象是能够改动的.正确的代码例如以下:
而写入plist文件的代码也比較简单,例如以下:
注意以上代码并不会改动Xcode中的plist文件,但的确会改动iOS模拟器中App中包括的plist文件,假设发现Xcode中的plist文件内容没有变化,不要感到奇怪啊!
随着游戏和玩家逐步发生互动,玩家会改动人物和物件的交互的状态.这也是RPG游戏最主要的功能.
在切换每一个地图时须要将上一个地图发生的改变存储到plist文件里去.
我採用的方法为现将plist文件读入结构对象中,然后改动之,再写会plist文件里.
读入的代码例如以下:
NSMutableDictionary *mapInfoMDict = [[NSDictionary dictionaryWithContentsOfFile:fullPath] mutableCopy];
可是在改动mapInfoMDict中的某个子结构时,却错误发生:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFDictionary setObject:forKey:]: mutating method sent to immutable object'
意思是在一个不可变的对象上调用可变方法.
原因是尽管上面用了mutbaleCopy,可是这是浅拷贝,仅仅有第一层的对象是能够改动的.正确的代码例如以下:
_mapInfoMDict = [NSMutableDictionary dictionaryWithContentsOfFile:fullPath];
而写入plist文件的代码也比較简单,例如以下:
[_mapInfoMDict writeToFile:fullPath atomically:YES];
注意以上代码并不会改动Xcode中的plist文件,但的确会改动iOS模拟器中App中包括的plist文件,假设发现Xcode中的plist文件内容没有变化,不要感到奇怪啊!
相关文章推荐
- Objc运行时读取和写入plist文件遇到的问题
- Objc运行时读取和写入plist文件遇到的问题
- Objc运行时读取和写入plist文件遇到的问题
- 可执行文件相关配置文件的读取、写入
- ini文件写入时遇到的问题
- Iphone开发中无法读取plist文件的问题
- plist文件的读写 ; 读取 plist文件中的Boolean类型的字段值 和写入Boolean的值 (备忘)
- 读取和写入plist文件
- [C#]不用IIS直接执行aspx文件中遇到的问题
- java读取含日文字符的csv文件,并存取到access数据库中遇到的问题
- 读取网络文件遇到的问题。
- win7 web开发遇到的问题-由于权限不足而无法读取配置文件,无法访问请求的页面
- iPhone读取和写入plist文件
- iPhone读取和写入plist文件
- PHP file函数读取文件遇到<***>时的奇怪问题
- 解决执行Oracle控制脚本时遇到的 “cat: /etc/oratab: 没有那个文件或目录”的问题
- [C#]不用IIS直接执行aspx文件中遇到的问题
- java 文件读取写入的编码问题
- 在用POI读取EXCEL文件时遇到的问题
- iPhone读取和写入plist文件