plist不会加载到数组中

时间:2011-12-08 09:55:01

标签: iphone objective-c xcode plist

我是Objective-C的新手,所以对于我正在做的事情,可能有一个非常简单的解决方案。我遇到的问题是由于某种原因,以下代码不会将plist文件中的内容添加到我的数组中:

在我的viewDidLoad函数中:

// Grab information from the plist
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle 
    pathForResource:@"conversions" 
    ofType:@"plist"
];
NSArray *array = [[NSArray alloc]
    initWithContentsOfFile:plistPath
];

文件“conversions.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">
<dict>
    <key>Categories</key>
    <array>
        <dict>
            <key>name</key>
            <string>Speed</string>
            <key>conversions</key>
            <array>
                <dict>
                    <key>type</key>
                    <string>mph</string>
                    <key>description</key>
                    <string>mile/hour</string>
                    <key>multiplier</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>type</key>
                    <string>ft/s</string>
                    <key>description</key>
                    <string>foot/second</string>
                    <key>multiplier</key>
                    <real>1.466667</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>km/h</string>
                    <key>description</key>
                    <string>kilometer/hour</string>
                    <key>multiplier</key>
                    <real>1.609344</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>m/s</string>
                    <key>description</key>
                    <string>meter/second</string>
                    <key>multiplier</key>
                    <real>0.44704</real>
                </dict>
            </array>
        </dict>
        <dict>
            <key>name</key>
            <string>Distance</string>
            <key>conversions</key>
            <array>
                <dict>
                    <key>type</key>
                    <string>ft</string>
                    <key>description</key>
                    <string>feet</string>
                    <key>multiplier</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>type</key>
                    <string>yd</string>
                    <key>description</key>
                    <string>yard</string>
                    <key>multiplier</key>
                    <real>0.3333333</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>mi</string>
                    <key>description</key>
                    <string>mile</string>
                    <key>multiplier</key>
                    <real>0.0001894</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>in</string>
                    <key>description</key>
                    <string>inch</string>
                    <key>multiplier</key>
                    <integer>12</integer>
                </dict>
                <dict>
                    <key>type</key>
                    <string>m</string>
                    <key>description</key>
                    <string>meter</string>
                    <key>multiplier</key>
                    <real>0.3048</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>km</string>
                    <key>description</key>
                    <string>kilometer</string>
                    <key>multiplier</key>
                    <real>0.0003048</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>cm</string>
                    <key>description</key>
                    <string>centimeter</string>
                    <key>multiplier</key>
                    <real>30.48</real>
                </dict>
            </array>
        </dict>
        <dict>
            <key>name</key>
            <string>Volume</string>
            <key>conversions</key>
            <array>
                <dict>
                    <key>type</key>
                    <string>ft^3</string>
                    <key>description</key>
                    <string>cubic feet</string>
                    <key>multiplier</key>
                    <integer>1</integer>
                </dict>
                <dict>
                    <key>type</key>
                    <string>liter</string>
                    <key>description</key>
                    <string>liter</string>
                    <key>multiplier</key>
                    <real>28.31685</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>acre ft</string>
                    <key>description</key>
                    <string>acre foot</string>
                    <key>multiplier</key>
                    <real>2.3e-05</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>barrel</string>
                    <key>description</key>
                    <string>barrel [US, liquid]</string>
                    <key>multiplier</key>
                    <real>0.2374768</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>gallon</string>
                    <key>description</key>
                    <string>gallon [US, liquid]</string>
                    <key>multiplier</key>
                    <real>29.92208</real>
                </dict>
                <dict>
                    <key>type</key>
                    <string>quart</string>
                    <key>description</key>
                    <string>quart [US, liquid]</string>
                    <key>multiplier</key>
                    <real>29.92208</real>
                </dict>
            </array>
        </dict>
    </array>
</dict>
</plist>

1 个答案:

答案 0 :(得分:7)

在我看来,你的plist中的根对象是一个dict而不是一个数组,你不应该把它加载到NSDictionary中吗?

NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];