将数组嵌入到plist中的Dict结构中

时间:2013-02-25 19:03:37

标签: ios plist

我是iOS的初学者。我发现的每个资源在plists中的dicts中只有键字对。

<key></key>
<string></string>

我想知道是否有可能让结构中的一个对象成为对象是数组的密钥对。在我的plist中,我有如下结构。第一个字典包含可变数量的键字符串对,这些字符串对可以存在于或不存在于plist中。我的代码检查是否存在某些密钥。但是,我想添加一个数组,该数组将包含此初始字典所需的主题数。下面的代码不起作用,但这是我希望能够做到的。

<array>
    <dict>
        <key>title</key>
        <string>SomeTitle</string>
             .
             .
             .
        <key>filters</key>
        <array>???

        </array>???
    </dict>
</array>

2 个答案:

答案 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];