gpt4 book ai didi

ios - 查询按专辑名称和轨道编号排序的 MPMediaItems

转载 作者:行者123 更新时间:2023-11-29 13:06:59 27 4
gpt4 key购买 nike

我正在尝试获取用户 iPhone 库中所有视频项目的列表,并让它们首先按专辑名称排序,然后按轨道编号排序(我的想法是这会将所有电视节目和播客放在一起以正确的节目/剧集顺序)。问题是,我想不出一种方法来按这样的两个参数对 MPMediaItems 进行排序。

现在,我这样设置查询:

MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeAnyVideo] forProperty:MPMediaItemPropertyMediaType];

MPMediaQuery *query = [[MPMediaQuery alloc] init];
[query addFilterPredicate:predicate];

NSArray *arrayMediaItems = [[NSArray alloc] init];
arrayMediaItems = [query items];

然后我这样排序:

NSArray *sortedArray = [arrayMediaItems sortedArrayUsingComparator:^(id a, id b) {
NSNumber *first = [(MPMediaItem*)a valueForProperty:MPMediaItemPropertyAlbumTitle];
NSNumber *second = [(MPMediaItem*)b valueForProperty:MPMediaItemPropertyAlbumTitle];
return [first compare:second];
}];

问题是,它会返回一个列表,其中所有专辑(阅读:节目)的顺序都是正确的,但其中的剧集只是按字母顺序排列,这显然是不对的。我试着这样做:

NSSortDescriptor *sortAlbum = [[NSSortDescriptor alloc] initWithKey:@"MPMediaItemPropertyAlbumTitle" ascending:YES];
NSSortDescriptor *sortTrackNum = [[NSSortDescriptor alloc] initWithKey:@"MPMediaItemPropertyAlbumTrackNumber" ascending:YES];
NSArray *sortDescriptors = @[sortAlbum, sortTrackNum];
sortedArray = [arrayMediaItems sortedArrayUsingDescriptors:sortDescriptors];

但我收到一个错误:此类对于键 MPMediaItemPropertyAlbumTitle 不符合键值编码。据我了解,这是因为我试图按属性而不是键进行排序。

所以我的问题是:如何根据多个因素对 MPMediaItems 进行排序?我可以排序初始结果(例如,按轨道编号而不是按标题字母顺序排列),然后按专辑名称排序吗?有没有办法对二维使用 NSSortDescriptorsortedArrayUsingComparator

执行此操作的最佳方法是什么?

最佳答案

将此视为评论。因为我不能在那里发布图片。

enter image description here

enter image description here

上图是MediaPlayer框架常量的截图。你说没有像“MPMediaItemPropertyAlbumTitle”和“MPMediaItemPropertyAlbumTrackNumber”这样的属性。因为它们是一些其他属性的常量。

尝试使用 albumTitlealbumTrackNumber 而不是“MPMediaItemPropertyAlbumTitle”和“MPMediaItemPropertyAlbumTrackNumber

关于ios - 查询按专辑名称和轨道编号排序的 MPMediaItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18416265/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com