2013-07-10 64 views
2

所以我正在開發一個GPA計算器應用程序。現在,我的評分等級存儲爲NSDictionary,其中包含該鍵的字符串和該值的數字(即@"A" - >4.0)。屬性列表VS. NSDictionary

我一直在意識到我經常需要以不同的方式訪問數據,NSDictionary不允許。例如,我可能想爲每個條目添加一個標籤以進行排序。這是屬性列表的設計目的嗎?我可以有一個密鑰@"A"與標籤1和價值4.0與它相關嗎? 我想是這樣的:

<dict> 
    <key>GradeScale</key> 
    <array> 
        <dict> 
            <key>A_grade</key> 
            <string>A</string> 
            <key>point_value</key> 
            <number>4.0</number> 
      <key>tag</key> 
      <number>1</number> 
        </dict> 
        <dict> 
            <key>B_grade</key> 
            <string>B</string> 
            <key>point_value</key> 
            <number>3.0</number> 
      <key>tag</key> 
      <number>2</number> 

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

這是在正確的軌道還是我還差得遠呢?

編輯: 所以,我已經走了字典的數組的東西,如:

<dict> 
    <key>Grade_Scale</key> 
    <array> 
     <dict> 
      <key>string_value</key> 
      <string>A</string> 
      <key>point_value</key> 
      <real>4</real> 
      <key>Tag</key> 
      <integer>1</integer> 
     </dict> 
     <dict> 
      <key>string_value</key> 
      <string>A-</string> 
      <key>point_value</key> 
      <real>3.7</real> 
      <key>Tag</key> 
      <integer>2</integer> 
     </dict> 

我真正希望做的是能夠引用由STRING_VALUE,point_value,或標籤一定的價值。以上是否允許我這樣做?

+0

你在這裏有什麼是我會做的。請記住,正如@QwertyBob在他的回答中所說的那樣,這只是它存儲在文件中的方式。您將創建一個數組,然後使用您的示例中的值爲您的評分等級中的每個年級添加一個字典對象。除非你想將它保存到文件中,否則根本不需要plist。 (請注意,我同意他的回答中的所有內容,除了字典的價值之外,因爲他正在存儲關於特定學生作業的成績的信息,而不是您詢問的分級系統。) – lnafziger

+0

我確實希望將其保存到一份文件。我希望評分等級一旦設定就會保持不變,但不會改變。 – LT819

+0

那麼,如果你在代碼中創建它,它將會持續存在(除非你需要對它進行修改,這對於像這樣的分級來說是不尋常的),並且不需要實際寫入文件。 .. – lnafziger

回答

2

屬性列表只是一個文件格式。 NSDictionary是。它們不可互換。


目前尚不清楚(至少對我來說),要存儲什麼樣的關係。(所以有可能是一個更好的結構)

如果這本字典是拿不信等級的數值(即「一個‘A’是我的GPA價值10分」),而是實際的課程成績:那麼你可能需要的是擁有字典的數組。

Array   // Holding each 'courses'. 
of Dictionaries // Where everything about the courses is stored: 
       //  {"name" => "Biology" 
       //  "grade" => ... 
       //  "tag" => "science" 
       //  "scoreWeight" => 0.8 // this is worth 80% of my total score 

你可以很容易的過程中數組但是你解決吧。

+0

哎謝謝你的回覆。目前,我希望在plist中存儲的所有內容都是一個評分等級。我選擇了一系列字典 – LT819