0

iOS初心者です。私が見つけたすべてのリソースには、plists 内の辞書にキー文字列のペアしかありません。

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

構造内のオブジェクトの1つを、オブジェクトが配列であるキーペアにすることができるかどうか疑問に思っています。私の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

メソッドを使用して plist ファイルをロードできるようにするinitWithContentsOfFile:には、適切な 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 に答える