0

我是iOS的初学者。我找到的每个资源在 plist 中的字典中只有键字符串对。

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

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

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

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

2 回答 2

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>
于 2013-02-25T19:37:11.267 回答
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];
于 2013-02-25T19:59:27.543 回答