You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift:如何获取个人媒体库流派的实际名称?

嘿,我之前也踩过这个坑!直接打印MPConcreteMediaItemCollection实例时,系统只会输出它的类名加内存地址(就是那个讨厌的十六进制后缀),完全不是我们要的流派名称。别慌,解决起来很简单,给你梳理清楚:

如何获取实际的流派名称

核心逻辑是:每个MPConcreteMediaItemCollection对应一个流派分组,你需要从这个集合中提取它的MPMediaPropertyGenre属性值——这才是我们要的流派名称。

具体代码实现(Swift版)

假设你已经通过媒体查询拿到了流派集合数组:

let genreQuery = MPMediaQuery.genres()
guard let genreCollections = genreQuery.collections else { 
    print("未获取到流派数据")
    return 
}

接下来遍历集合,提取名称:

for genreCollection in genreCollections {
    // 提取流派名称属性
    if let genreName = genreCollection.value(forProperty: MPMediaPropertyGenre) as? String {
        print("流派:\(genreName)")
    } else {
        print("无法识别的流派")
    }
}

如果是Objective-C版本

代码逻辑是一样的,写法稍有不同:

MPMediaQuery *genreQuery = [MPMediaQuery genresQuery];
NSArray *genreCollections = genreQuery.collections;

for (MPConcreteMediaItemCollection *collection in genreCollections) {
    NSString *genreName = [collection valueForProperty:MPMediaPropertyGenre];
    if (genreName) {
        NSLog(@"流派:%@", genreName);
    } else {
        NSLog(@"无法识别的流派");
    }
}

为什么这能行?

MPMediaItemCollection的value(forProperty:)(Objective-C是valueForProperty:)方法可以获取该集合对应的元数据属性,MPMediaPropertyGenre是苹果提供的专门用于获取流派名称的属性键,把返回值转成字符串类型,就能得到我们需要的实际流派名称了。

内容的提问来源于stack exchange,提问作者Jordan Heath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:29:21