我正在尝试将具有复杂结构的NSDictionary写入plist,以便在iPhone应用程序中使用。但是,该文件似乎根本不写,我不知道为什么。
这就是结构应该是这样的:
Level Dict
Roads Array
Road1 Array
Vertex1 Dict
x Number
y Number
Vertex2 Dict
...
这就是我的代码:
NSMutableDictionary *levels = [[NSMutableDictionary alloc] init];
NSMutableArray *roads = [[NSMutableArray alloc] init];
for(ChainLinkRoad *r in data.roads){
NSMutableArray *road = [[NSMutableArray alloc] init];
for(ChainPoint *p in r.v){
NSNumber *x = [NSNumber numberWithFloat: p.x];
NSNumber *y = [NSNumber numberWithFloat: p.y];
NSMutableDictionary *vertex = [[NSMutableDictionary alloc] init];
[vertex setObject:x forKey:@"x"];
[vertex setObject:y forKey:@"y"];
[road addObject:vertex];
}
[roads addObject:road];
}
[levels setObject:roads forKey:@"Roads"];
bool b = [levels writeToFile:@"test.plist" atomically:YES];
//returns true
我已经尝试将mutable转换为不可变的对应物,但这不起作用。我能够从最终的NSDictionary(级别)访问数据就好了。
编辑:我应该补充一点,这个plist不适合在iphone游戏中使用。它在设计关卡时供个人使用。代码将不存在于最终版本中。
答案 0 :(得分:1)
一个常见的问题是,字典对于字符串转换无效,如无效的UTF-8字符。在控制台上输出以检查它。
如果这对您没有帮助,请仅保存一些元素以查看正在发生的事情。
答案 1 :(得分:-1)
我昨天刚刚发布了同一个问题的答案。而不是试图保存类的各个数据元素,而是使用NSKeyArchiver和NSCoding保存整个对象。单击链接以获取完整说明。
How can I save Array of Class Objects in to a Plist(Iphone Development)