以正确的顺序读取plist中的项目范围

时间:2012-07-21 18:31:04

标签: cocos2d-iphone plist

在iPhone的cocos2d中,有没有办法将以下内容转换为for循环,以便可以指定一系列值?目前,它只是通过所有值(但不是正确的顺序)。

// plist file 
NSString * file                 = @"myproperties";
NSString * dictPath             = [[NSBundle mainBundle] pathForResource:file 
                                                         ofType:@"plist"];

// get dictionary
NSMutableDictionary * dictPlist = [[NSMutableDictionary alloc] 
                                   initWithContentsOfFile:dictPath];

NSEnumerator *enumerator = [dictPlist objectEnumerator ];
id value;
while ((value = [enumerator nextObject])) {
    CCLog("Test: @%", [value objectForKey:@"Name"]);
}

我希望能够只打印一系列项目,例如10到15(按照列表中数据的顺序)。怎么能实现呢?


编辑:如果我想使用数组而不是dict(保持订单),我如何更改以下列表?

<?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>personTom</key>
    <dict>
        <key>Name</key>
        <string>Tom</string>
        <key>Age</key>
        <integer>30</integer>
    </dict>
    <key>personJames</key>
    <dict>
        <key>Name</key>
        <string>James</string>
        <key>Age</key>
        <integer>45</integer>
    </dict>
    <!-- (...) -->
</dict>
</plist>

1 个答案:

答案 0 :(得分:1)

迭代NSDictionary元素会以随机顺序为您提供元素。字典未排序。

如果排序对您很重要,请使用NSArray存储元素并对其进行排序。或者,您可以读取所有字典的键并将它们放入临时NSArray中,然后对该数组进行排序,迭代数组中的键以按排序顺序获取字典的值。