Ваш .plist - это просто копия на диске информации, которая должна храниться в памяти при запуске вашей программы.Если вы можете получить информацию, и ваш код работает, то беспокоиться о форматировании файла .plist для меня не имеет большого смысла.Все, что работает, работает, в данном случае.
Обновление: Хорошо, я думаю, что вы действительно можете сделать это как более кратким, так и более значимым.Вот мои мысли.
Базовым контейнером информации является массив.Каждый элемент в массиве является словарем.Пары ключ / объект в словаре - это имя мышцы и массив упражнений.Каждый элемент в массиве упражнений представляет собой другой словарь, пары ключей / объектов которого являются названием упражнения и независимо от того, что вы решили использовать для детализации.Конечный результат будет выглядеть следующим образом:
<array>
<dict>
<key>muscleName</key>
<string>Abdominals</string>
<key>exercises</key>
<array>
<dict>
<key>exerciseName</key>
<string>Ab Roller</string>
<key>exerciseDetail</key>
<string></string> <!-- or possibly data -->
</dict>
<dict>
<key>exerciseName</key>
<string>Ab Crunch Machine</string>
<key>exerciseDetail</key>
<string></string>
</dict>
<dict>
<key>exerciseName</key>
<string>Advanced Kettlebell Windmill</string>
<key>exerciseDetail</key>
<string></string>
</dict>
<!-- more exercises? -->
</array>
<!-- End Abdominals -->
</dict>
<dict>
<key>muscleName</key>
<string>AnotherMuscle</string>
<key>exercises</key>
<array>
<!-- dicts of the exercises for this muscle -->
</array>
<!-- End AnotherMuscle -->
</dict>
<!-- more muscles -->
</array>
Я думаю, это облегчит создание вашего .plist и сделает кодирование более простым и читаемым, когда вы дойдете до этого этапа.
Если у вас есть огромное количество информации (и звучит так, как вы), вы можете также разделить ее на три (или более) файла: имена мышц, упражнения, подробности упражнения.