Uitableview от Plist Dictionary Keys, iOS
Вопрос
Я пытаюсь получить название пользовательских рингтонов в каталоге iTunes на Jailbrasbroke Iphone. Я могу успешно перечислить пользовательские рингтоны, но они отображаются как HWYH1.m4r
, что и то, что iTunes переименовает файлы, но я знаю, что есть способ расшифровать фактическое название песни.
NSMutableDictionary *custDict = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/iPhoneOS/private/var/mobile/Media/iTunes_Control/iTunes/Ringtones.plist"];
NSMutableDictionary *dictionary = [custDict objectForKey:@"Ringtones"];
NSMutableArray *customRingtone = [[dictionary objectForKey:@"Name"] objectAtIndex:indexPath.row];
NSLog(@"name: %@",[customRingtone objectAtIndex:indexPath.row]);
cell.textLabel.text = [customRingtone objectAtIndex:indexPath.row];
dictionary
возвращается:
"YBRZ.m4r" =
{
GUID = 17A52A505A42D076;
Name = "Wild West";
"Total Time" = 5037;
};
cell.textLabel.text
возвращается: name: (null)
Решение
NSMutableArray *customRingtone = [[dictionary objectForKey:@"Name"] objectAtIndex:indexPath.row];
Эта линия совершенно неверна. Ваш dictionary
Объедините, на самом деле, NSDictionary с клавишами, равными, такими значениями, как «ybrz.m4r». Вы запрашиваете значение для ключа с именем «Имя», которого не существует. Затем, с этим возвращенным объектом, вы отправляете ему метод, как если бы он был NSArray
, чего это не так. А потом вы ожидаете, что это вернет NSArray
. Анкет Опять же, я не думаю, что это так. Это должно быть больше похоже на это:
NSArray *keys = [dictionary allKeys];
id key = [keys objectAtIndex:indexPath.row];
NSDictionary *customRingtone = [dictionary objectForKey:key];
NSString *name = [customRingtone objectForKey:@"Name"];
cell.textLabel.text = name;
Также обратите внимание, я не использую NSMutableDictionary
с Если вам не нужно, чтобы словарь был изменчивым, у вас, вероятно, должен быть изменчивый словарь.