0

を解析しXMLて 2 つの可変配列に格納しました。それらは albumArray と trackArray です。これら2つの配列を使用して辞書を作成しました。それは次のとおりです。

 trackANDAlbum = [NSMutableDictionary dictionaryWithObjects:trackArray forKeys:albumArray];

私の辞書は次のようになります:

 album1 = song1 
 album1 = song2
 album1 = song3 etc. 

albumArray には重複が含まれているため、 を使用して削除し、NSSet「eliminateDupe」と呼ばれるこの新しい配列を のデータ ソースとして指定しUITableViewます。

私が直面している問題は、ユーザーが TableView で特定のアルバム名を選択すると、選択したアルバムの対応する曲を別のビューに表示する必要があることです。

そこで、TableView でどのアルバム名が選択されているかを特定し、DidSelectRowそれを辞書 trackANDAlbum のキーとして指定し、対応する曲を取得して tableview に表示することは可能ですか。

たとえば、選択したアルバムが「album1」の場合、次の tableview では、album1 に対応する曲、つまり song1、song2、song3 をリストする必要があります。このコンセプトを実現する可能性はありますか?

4

1 に答える 1

1

このコードを使用するよりも、albumArray を使用してテーブルビューにデータを入力している場合は、テーブルビューの行に触れるだけでアルバム名を取得できます。

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
         NSString * albumName = [albumArray objectAtIndex:indexPath.row];
        }

また、この albumName 変数をキーとして使用して、辞書から曲名を見つけることができます。別の配列を使用している場合は、それに応じて配列名を変更します。.h ファイルでプロパティを作成するよりも、このメソッドの外部で albumName 変数を使用する場合は、はい.

アップデート

albumName 変数を使用して辞書からデータを取得するため

if([yourDictionary objectForKey:albumName]!=nil)
   {               
     NSString * songName = [yourDictionary objectForKey:albumName];
   }

このコードを使用してデータを取得できます。別の方法で albumName を使用すると言ったように、そのプロパティを .h ファイルで作成し、それを .m ファイルで合成する必要があります。

編集

あなたの場合、単一のアルバム名に対して複数の曲名があるため、コードは次のようになります。

if([yourDictionary objectForKey: albumName]!=nil)
       {     
          NSArray * newSongAry;
         [newSongAry addObject:[yourDictionary objectForKey:albumName]];
       }
于 2013-02-27T11:21:09.817 に答える