質問

Jailbroken iPhoneのiTunesディレクトリでカスタム着メロの名前を取得しようとしています。カスタム着メロを正常にリストできますが、それらは次のように表示されます 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 実際、「ybrz.m4r」のような値に等しいキーを持つnsdictionaryです。 「名前」という名前のキーの値を要求していますが、これは存在しません。それから、その返されたオブジェクトで、あなたはそれがあたかもそうであるかのようにそれを送信しています 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;

また、私は使用していません NSMutableDictionarys。辞書を可変にする必要がない場合は、おそらく可変辞書が必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top