我是iOS的初学者。我找到的每个资源在plist中的dicts中只有key string对。
<key></key>
<string></string>
我想知道是否有可能让结构中的一个对象成为密钥对,其中对象是一个数组。在我的plist中,我有一个如下的结构。第一字典保存可变数量的关键字串对,这些关键字串对可能存在于plist中,也可能不存在。我的代码检查是否存在某些键。但是,我想在这个初始字典中添加一个数组,该数组将包含所需数量的主菜。下面的代码不能工作,但它是我希望能够做到的。
<array>
<dict>
<key>title</key>
<string>SomeTitle</string>
.
.
.
<key>filters</key>
<array>???
</array>???
</dict>
</array>
发布于 2013-02-25 19:59:28
为了能够使用initWithContentsOfFile:
方法加载plist文件,它需要是一个正确的plist文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>PageTitle</key>
<string>Title</string>
<key>Filters</key>
<array>
<dict>
<key>Filter</key>
<string>SomeFilter</string>
<key>Param</key>
<string>SomeParam</string>
</dict>
</array>
</dict>
</array>
</plist>
另外,这一行:
NSMutableArray* filters = [[[NSMutableArray alloc] initWithArray:[dict objectForKey:@"Filters"]] retain];
应该是:
NSMutableArray* filters = [dict[@"Filters"] mutableCopy];
发布于 2013-02-25 19:37:11
使用
<key>SomeKey</key>
<array>
</array>
毕竟我们是对的。我的解析代码就是无法识别它。
我正在使用解析代码
NSMutableArray* propertyList = [[NSMutableArray alloc] initWithContentsOfFile:path];
NSMutableDictionary* dict = [propertyFile objectAtIndex:0];
NSMutableArray* filters = [[[NSMutableArray alloc] initWithArray:[dict objectForKey:@"Filters"]] retain];
使用plist的
<array>
<dict>
<key>PageTitle</key>
<string>Title</string>
<key>Filters</key>
<array>
<dict>
<key>Filter</key>
<string>SomeFilter</string>
<key>Param</key>
<string>SomeParam</string>
</dict>
</array>
</dict>
</array>
https://stackoverflow.com/questions/15074442
复制