2012-02-01 68 views
1

好吧,我在遊戲結束時給了我一個小遊戲,3個數據。如何正確排序Plist?

得分,硬幣和等級。對此,我添加了排名。 (這是目前手工完成的,直到我弄清楚如何改變取決於分數排名#)

所以,這裏是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> 

我想能夠排序按等級排列的高分榜,或硬幣或水平。

我已經嘗試了很多事情來實現它,但沒有做任何我想要的。

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

在此先感謝。

回答

2

屬性列表是存儲器中數據的格式。要對其進行分類,您應該:

  1. 將數據讀入適當的結構。
  2. 對結構中的數據進行排序。
  3. 將結構寫回到屬性列表。

使用適當的結構很重要。屬性列表支持兩種容器對象:數組和字典。數組是有序列表;字典是無序的鍵/值對列表。它看起來像你現在正在使用一個字典,用鍵來表示順序。您應該將存儲方案改爲使用數組。然後,您可以根據分數對數組進行排序並將其寫入文件。

+0

好的。但是如何將一個分數與例如硬幣或水平相關聯,如果這只是一個數組? 我的意思是,當我想要取回數據時,我需要一個值,但是所有其他的鏈接。 – user1183716 2012-02-01 21:20:47

+1

@ user1183716:您已擁有包含有關高分的所有信息的單個字典。只需按照您希望它們的順序將它們存儲在數組中(即按分數或硬幣排序)。 – dreamlax 2012-02-01 21:26:54

+1

@ user1183716每個遊戲都應該仍然是一本字典,但是你需要一個*數組*的字典,而不是像你現在的字典。您展示的示例plist在頂層使用鍵「entry1」,「entry2」,「entry3」...,並且每個鍵的值都是另一個字典。將所有這些詞典放在一個數組中,根據各自的分數對數組進行排序,然後寫入文件。完成。 – Caleb 2012-02-01 21:30:58