Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Xamarin.iOS中的播放列表_Xamarin.ios_Xamarin - Fatal编程技术网

获取Xamarin.iOS中的播放列表

获取Xamarin.iOS中的播放列表,xamarin.ios,xamarin,Xamarin.ios,Xamarin,我很难通过Xamarin.iOS获取iPhone的播放列表集合。我想用播放列表描述填充自定义对象列表。我在苹果的文档中找到了一个关于如何在Obj-C中实现的页面。然而,无论我在Xamarin中做什么,我都会得到无效的强制转换异常或其他错误。 将播放列表放入收藏是可以的。但是,问题出在播放列表的名称之后 private List<Playlist> GetPlaylists() { MPMediaQuery mq = MPMediaQuery.playl

我很难通过Xamarin.iOS获取iPhone的播放列表集合。我想用播放列表描述填充自定义对象列表。我在苹果的文档中找到了一个关于如何在Obj-C中实现的页面。然而,无论我在Xamarin中做什么,我都会得到无效的强制转换异常或其他错误。 将播放列表放入收藏是可以的。但是,问题出在播放列表的名称之后

    private List<Playlist> GetPlaylists()
    {
        MPMediaQuery mq = MPMediaQuery.playlistsQuery;
        // At this point mq.Collections has a reference to the playlists. However I have no way of getting the Name/Description of the playlist. 
        // Thats why I was attempting to use MPMediaPlaylist
        // MPMediaPlaylist[] mp1 = mq.Collections as MPMediaPlaylist[]; - doesn't work - results in mp1 being null


        List<Playlist> playlists = (from p in mq.Collections
                                    select new Playlist () { PlaylistDescription = ((MPMediaPlaylist)p).ValueForProperty("MPMediaPlaylistPropertyName").ToString()}
                                   ).ToList();
        return playlists;
    }
private List GetPlaylists()
{
MPMediaQuery mq=MPMediaQuery.playsquery;
//此时,mq.Collections引用了播放列表。但是我无法获取播放列表的名称/描述。
//这就是我尝试使用MPMediaPlaylist的原因
//MPMediaPlaylist[]mp1=mq。集合为MPMediaPlaylist[];-不工作-导致mp1为空
列表播放列表=(来自mq.Collections中的p
选择新建播放列表(){playldescription=((MPMediaPlaylist)p).ValueForProperty(“MPMediaPlaylistPropertyName”).ToString()}
).ToList();
返回播放列表;
}
我的另一个变体如下(但在forearch的迭代中再次收到无效的强制转换异常,即mp1中的MediaPlaylist):

MPMediaQuery mq=MPMediaQuery.playsquery;
数组mp1=mq.Collections作为数组;
列表播放列表=新列表();
foreach(mp1中的MPMediaPlaylist播放列表){
添加(新播放列表(){playldescription=Playlist.ValueForProperty(“MPMediaPlaylistPropertyName”).ToString();
}
正如我在代码中注释的那样,我可以通过查询的collections属性获得播放列表的句柄。但是,我无法获取播放列表的名称/标题/说明。这就是我尝试使用MPMediaPlaylist的原因

在即时窗口和观看窗口中,我尝试强制转换(MPMediaPlaylist)mq.collections[0],但再次得到无效的强制转换异常

但正如你在上面看到的,我没有成功地复制它。如果有人能关注一下我上面的内容,以及这个Objective-C链接和建议,我将不胜感激

非常感谢,


汤姆

我只想把这个放在这里。。。。如果将来有人碰到这个问题

因此,要获取播放列表,您应执行以下操作:

        MPMediaQuery playlistQuery = MPMediaQuery.PlaylistsQuery;
        MPMediaItemCollection[] playlistCollection = playlistQuery.Collections;

        foreach(MPMediaItemCollection collection in playlistCollection){
            NSString key = MPMediaPlaylistProperty.Name;
            string name = collection.ValueForKey(key).ToString();
            //Do whatever you need with the info 
        }

这似乎应该会起作用——可能是个bug。我会尝试向bugzilla.xamarin.com提交一个测试用例
        MPMediaQuery playlistQuery = MPMediaQuery.PlaylistsQuery;
        MPMediaItemCollection[] playlistCollection = playlistQuery.Collections;

        foreach(MPMediaItemCollection collection in playlistCollection){
            NSString key = MPMediaPlaylistProperty.Name;
            string name = collection.ValueForKey(key).ToString();
            //Do whatever you need with the info 
        }