2013-07-10 3 views
2

Итак, я работаю над графическим калькулятором. Прямо сейчас у меня есть шкала оценки, которая хранится как 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> 

это правильный путь или я даже не близко?

Edit: Так что я пошел на массив словарей с чем-то вроде:

<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 - это класс. Они не взаимозаменяемы.


Это не ясно (для меня по крайней мере) отношения между тем, что вы хотите сохранить. (так что может быть лучше структура)

Если этот словарь провести не численные значения буквенных оценок (т.е. «An„A“стоит 10 очков в моем GPA») и вместо фактического классы для курсов: тогда, возможно, вам нужен массив, содержащий словари.

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

Смежные вопросы