Две проблемы:
- Загрузка списка в NSDictionary:
Это простая проблема, которую вы, похоже, уже поняли. Глобальный объект в вашем списке является массивом, а не диктатом, поэтому, когда вы загружаете его в словарь, он не знает, что делать (несовместимые типы), поэтому вы получаете пустой словарь.
- Цикл по массиву словарей:
Из полученного исключения вы вызываете 'setObject: forKey:' в словаре, который инициализируется как NSDictionary, а не NSMutableDictionary. Указатель напечатан как NSMutableDictionary, но не фактический в памяти объекта. Вам нужно изменить свою линию с.
NSMutableDictionary *myDic = [[NSDictionary alloc] initWithContentsOfFile:path];
до
NSMutableDictionary *myDic = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
и фактически, поскольку загрузка словаря из файла дает вам пустой словарь, вы тратите впустую циклы, пытаясь загрузить его из файла, и должны просто создать новый:
NSMutableDictionary *myDic = [[NSMutableDictionary alloc] init];