使用DidSelectRow选择作为键/过滤器对象过滤NSDictionary

时间:2013-02-27 10:35:25

标签: iphone ios

我解析并将XML存储在两个可变数组中,它们是albumArray和trackArray。我使用这两个数组创建了一个字典,如下所示,

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

所以我的字典看起来像这样:

 album1 = song1 
 album1 = song2
 album1 = song3 etc. 

由于albumArray包含重复项,因此我使用NSSet将其删除,并将这个名为“eliminateDupe”的新数组作为UITableView的数据源。

我面临的问题是,当用户在TableView中选择特定的专辑名称时,所选专辑的相应歌曲必须显示在另一个视图中。

因此,可以确定在TableView的DidSelectRow中选择了哪个专辑名称,并将其作为词典trackAlAlbum的键提供,并检索相应的歌曲并将其显示在tableview中。

例如,如果所选专辑是“album1”,那么在下一个表格中必须列出与album1相对应的歌曲,即song1,song2,song3。实现这一概念的任何可能性,或者我有更好的方法?

1 个答案:

答案 0 :(得分:1)

如果您使用albumArray填充您的tableview而不是使用此代码,您可以在tableview中触摸行获取相册名称。

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

你可以使用这个albumName变量作为键从你的字典中查找歌曲名称,如果你使用另一个数组然后更改数组名称,如果你想在这个方法之外使用albumName变量而不是在.h文件。

<强>更新

使用我们的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]];
       }