2

ここで説明されているように、plistファイルをNSArray使用して読み込もうとしていますinitWithContentsOfFile

私のコードは次のようになります

    NSBundle *bundle = [NSBundle mainBundle];
    NSString *plistPath = [bundle pathForResource:
                           @"routes" ofType:@"plist" ];
    routes = [[NSArray alloc] initWithContentsOfFile:plistPath ];
    NSLog:(@"contents of myArray %@", routes);

routes.plist内部に配列と 2 つの文字列値の完全に単純な構造があります

<?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">
<dict>
    <key>Root</key>
    <array>
        <string>1</string>
        <string>2</string>
    </array>
</dict>
</plist>

これは、xcodeでどのように見えるかです

すべてがうまくいっているようです。plistPath正しい値で初期化されます。これは、ファイルがバンドルにコピーされ、読み取ることができることを意味します。しかし、値をroutes = [[NSArray alloc] initWithContentsOfFile:plistPath ];返し0x0ます。これは等しいと思いますnil

コードの何が問題になっていますか?

4

2 に答える 2

9

実際、あなたの plist は辞書です。

これを変える:

<dict>
    <key>Root</key>
    <array>
        <string>1</string>
        <string>2</string>
    </array>
</dict>

これに:

<array>
    <string>1</string>
    <string>2</string>
</array>
于 2012-06-03T22:02:03.887 に答える
2

私はあなたがこのようなことをしたいと思います:

NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:
                       @"routes" ofType:@"plist"];

NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:plistPath];
NSArray *routes = [dictionary objectForKey:@"Root"];
于 2012-06-03T22:02:21.500 に答える