我是iOS的初学者。我发现的每个资源在plists中的dicts中只有键字对。
<key></key>
<string></string>
我想知道是否有可能让结构中的一个对象成为对象是数组的密钥对。在我的plist中,我有如下结构。第一个字典包含可变数量的键字符串对,这些字符串对可以存在于或不存在于plist中。我的代码检查是否存在某些密钥。但是,我想添加一个数组,该数组将包含此初始字典所需的主题数。下面的代码不起作用,但这是我希望能够做到的。
<array>
<dict>
<key>title</key>
<string>SomeTitle</string>
.
.
.
<key>filters</key>
<array>???
</array>???
</dict>
</array>
答案 0 :(得分:0)
使用
<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>
答案 1 :(得分:0)
为了能够使用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];