如何正确排序Plist?

时间:2012-02-01 21:12:49

标签: iphone sorting nsarray plist nsdictionary

嗯,我在比赛结束时给了我一个小游戏,3个数据。

得分,硬币和等级。对此,我添加了排名。 (这是手动完成的,直到我弄清楚如何根据分数改变排名#)

所以,这是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>entry1</key>
<dict>
    <key>rank</key>
    <string>1</string>
    <key>level</key>
    <string>9</string>
    <key>score</key>
    <string>1999</string>
    <key>coins</key>
    <string>764</string>
</dict>
<key>entry2</key>
<dict>
    <key>rank</key>
    <string>2</string>
    <key>level</key>
    <string>8</string>
    <key>score</key>
    <string>1799</string>
    <key>coins</key>
    <string>375</string>
</dict>
<key>entry3</key>
<dict>
    <key>rank</key>
    <string>3</string>
    <key>level</key>
    <string>6</string>
    <key>score</key>
    <string>1599</string>
    <key>coins</key>
    <string>894</string>
</dict>
<key>entry4</key>
<dict>
    <key>rank</key>
    <string>4</string>
    <key>level</key>
    <string>3</string>
    <key>score</key>
    <string>799</string>
    <key>coins</key>
    <string>523</string>
</dict>
</dict>
</plist>

我希望能够按等级,硬币或等级对高分榜进行排序。

我已经尝试了很多东西来实现它,但没有什么能实现我想要的。

所以,如果有人能给我一些提示,我将非常感激。

提前致谢。

1 个答案:

答案 0 :(得分:2)

属性列表是存储中数据的格式。要对它进行排序,您应该:

  1. 将数据读入适当的结构。
  2. 对结构中的数据进行排序。
  3. 将结构写回属性列表。
  4. 使用适当的结构很重要。属性列表支持两种容器对象:数组和字典。数组是有序列表;字典是键/值对的无序列表。看起来您现在正在使用字典,其中的键表示顺序。您应该更改存储方案以使用数组。然后你可以根据分数对数组进行排序并将其写入文件。