Filter NSDictionary using DidSelectRow selection as key/filter object
我在两个可变数组中解析并存储了一个
1 | trackANDAlbum = [NSMutableDictionary dictionaryWithObjects:trackArray forKeys:albumArray]; |
所以我的字典看起来像这样:
1 2 3 | album1 = song1 album1 = song2 album1 = song3 etc. |
由于albumArray 包含重复项,我使用
我面临的问题是,当用户在 TableView 中选择特定专辑名称时,所选专辑的相应歌曲必须显示在另一个视图中。
那么是否可以识别在 TableView 的
例如,如果选择的专辑是"album1",那么在下一个tableview中必须列出album1对应的歌曲,即song1,song2,song3。实现这个概念的任何可能性,否则我有一些更好的方法?
如果您使用albumArray 来填充您的tableview,而不是使用此代码,您可以通过tableview 中的行获取专辑名称。
1 2 3 4 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString * albumName = [albumArray objectAtIndex:indexPath.row]; } |
你可以使用这个albumName变量作为键来从你的字典中查找歌曲名称,如果你使用另一个数组然后改变数组名,是的,如果你想在这个方法之外使用albumName变量而不是让它的属性在.h 文件。
更新
使用我们的 albumName 变量从字典中检索数据
1 2 3 4 | if([yourDictionary objectForKey:albumName]!=nil) { NSString * songName = [yourDictionary objectForKey:albumName]; } |
您可以使用此代码检索数据,是的,正如我所说,要在另一种方法中使用专辑名称,您必须在 .h 文件中创建其属性并在 .m 文件中合成它。
编辑
在您的情况下,单个专辑名称有多个歌曲名称,因此您的代码将是这样的。
1 2 3 4 5 | if([yourDictionary objectForKey: albumName]!=nil) { NSArray * newSongAry; [newSongAry addObject:[yourDictionary objectForKey:albumName]]; } |