2015-08-27 3 views
0

Я пытаюсь загрузить NSMutableDictionary из Plist. Мой результат всегда равен NULL.Загрузить NSMutableDictionary из 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"> 
    <array> 
     <dict> 
      <key>LocNum</key> 
      <string>0</string> 
      <key>LocName</key> 
      <string>Head</string> 
     </dict> 
     <dict> 
      <key>LocNum</key> 
      <string>1</string> 
      <key>LocName</key> 
      <string>Left Hand</string> 
     </dict> 
     <dict> 
      <key>LocNum</key> 
      <string>2</string> 
      <key>LocName</key> 
      <string>Right Hand</string> 
     </dict> 
     .... 
    </array> 
</plist> 

Мой код очень прост:

locDictionary = [[NSMutableDictionary alloc] init]; 
NSString *locListpath = [[NSBundle mainBundle] pathForResource:@"LocList" ofType:@"plist"]; 
locDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:locListpath]; 
NSLog(@"locDictionary %@", locDictionary); 

Любые мысли или помочь? Благодаря

+0

имена файлов чувствительны к регистру, проверьте, введено ли вы правильное имя файла, а также корень - это массив, а не dict – Vig

+0

FYI - строка 'locDictionary = [[NSMutableDictionary alloc] init];' бессмысленно. Избавься от этой линии. – rmaddy

ответ

2

Ваш PLIST не NSDictionary, но NSArray словарей, если он находится в надлежащем месте на диске, этот код должен помочь:

NSString *path = [[NSBundle mainBundle] pathForResource:@"LocList" ofType:@"plist"]; 
NSMutableArray *locArray = [[NSMutableArray alloc] initWithContentsOfFile:path]; 
+0

Спасибо, plist был неправильно отформатирован ... – duck1970

1

Ваш PLIST определяет массив словарей, а не сам словарь , так что вам нужно, чтобы начать массив:

NSArray *array = [[NSArray alloc] initWithContentsOfFile:locListpath]; 

, а затем цикл по массиву, чтобы получить отдельные словари с чем-то вроде:

for (NSDictionary *dict in array) { 
... 
} 
Смежные вопросы