iOS中如何通过Swift读取MPMediaItem的year字段?
在iOS Swift中读取音乐库的年份字段
直接使用MediaPlayer框架提供的MPMediaItemPropertyYear属性就能读取到这个独立的年份字段,无需直接操作数据库(苹果也禁止直接访问MediaLibrary.sqlitedb)。具体操作如下:
- 权限配置:在
Info.plist中添加NSAppleMusicUsageDescription键,填写访问媒体库的合理原因(比如“需要访问您的音乐库以获取歌曲年份信息”),iOS 10及以上版本必须配置,否则无法读取媒体库且会导致审核被拒。 - 读取年份的代码示例:
import MediaPlayer // 请求媒体库权限 MPMediaLibrary.requestAuthorization { status in guard status == .authorized else { print("媒体库权限未授权") return } // 查询所有歌曲 let query = MPMediaQuery.songs() guard let items = query.items else { return } for item in items { // 读取年份字段 if let yearNumber = item.value(forProperty: MPMediaItemPropertyYear) as? NSNumber { let year = yearNumber.intValue print("歌曲:\(item.title ?? "未知"),年份:\(year)") } else { print("歌曲:\(item.title ?? "未知"),无年份信息") } } }
- 补充说明:
MPMediaItem的releaseDate属性需要完整的年/月/日发布日期元数据才会返回有效值,而很多音乐文件仅填写了年份、未补充具体月日,因此该字段为空。MPMediaItemPropertyYear对应的就是你在文件元数据和数据库中看到的独立年份字段,专门存储仅含年份的信息。
内容的提问来源于stack exchange,提问作者DisplayName
相关产品推荐
相关产品推荐

