解析从plist到数组的字典

时间:2010-08-25 15:18:54

标签: iphone objective-c plist

任何人都可以帮助将字典对象正确加载到数组中。 将plist加载到字典对象中工作正常,我能够将其中一些输出到命令行中。 问题是这种加载方式将每个Name和Price集合捆绑到数组中的同一个单元格中。 IE:  是否可以单独加载它们?或者也许在某种二维数组中,其中一个单元格用于名称,另一个单元格用于价格。

提前致谢。

测试是一个可变数组。

NSString* path = [[NSBundle mainBundle] pathForResource:@"property" ofType:@"plist"];
NSDictionary* amountData =  [NSDictionary dictionaryWithContentsOfFile:path];
if (amountData) {
    Test = [NSMutableArray arrayWithArray: amountData];
}

我的plist结构是:

<dict>
<key>New item</key>
<dict>
    <key>Name</key>
    <string>Property 1</string>
    <key>Price</key>
    <string>100000</string>
</dict>
<key>New item - 2</key>
<dict>
    <key>Name</key>
    <string>Property 2</string>
    <key>Price</key>
    <string>300000</string>
</dict>
<key>New item - 3</key>
<dict>
    <key>Name</key>
    <string>Property 3</string>
    <key>Price</key>
    <string>500000</string>
</dict>
<key>New item - 4</key>
<dict>
    <key>Name</key>
    <string>Property 4</string>
    <key>Price</key>
    <string>600000</string>
</dict>
</dict>

3 个答案:

答案 0 :(得分:1)

为什么不直接将其存储为数组?您的文件将如下所示:

<array>
    <dict>...</dict>
    <dict>...</dict>
    <dict>...</dict>
</array>

你可以这样做:

NSArray *amountData =  [NSArray arrayWithContentsOfFile: path];

否则正确的做法是:

Test = [NSMutableArray arrayWithArray: [amountData allValues]];

答案 1 :(得分:0)

您正在拨打电话

Test = [NSMutableArray arrayWithArray: amountData];

当amountData是一个NSDictionary,而不是一个数组......正如Max建议的那样,你可以只存储一个数组plist而不是一个字典plist。

答案 2 :(得分:0)

NSString* path = [[NSBundle mainBundle] pathForResource:@"property" ofType:@"plist"];
NSDictionary* amountData =  [NSDictionary dictionaryWithContentsOfFile:path];
if (amountData) {
    Test = [NSMutableArray arrayWithArray: [amountData allValues]];
}