如果您使用[MPMediaQuery genresQuery]
,则会得到MPMediaItemCollection
,但不会占用总播放时间。您可以使用representativeItem
,但这只能为您提供特定的项目播放时间。
是否有一种有效的方式来显示所有专辑,包括总播放时间?
答案 0 :(得分:0)
如果你需要获得整个图书馆的播放时间,那么你只需要遍历MPMediaQuery
中的项目。
let query = MPMediaQuery.albums()
let items = query.items
var totalTime: TimeInterval = 0.0
if items != nil {
for item in items! {
totalTime += item.playbackDuration
}
}
let duration = Int(totalTime)
let seconds = duration % 60
let minutes = duration / 60 % 60
let hours = duration / 3600
print("Total playback time: \(hours):\(minutes):\(seconds)")
集合将为您提供按字母顺序排序的MPMediaItems
数组,并按groupingType
选项(艺术家,专辑,流派等)分组。如果您需要库中每张专辑的播放时间,那么您可以像这样迭代:
let query = MPMediaQuery.albums()
let collections = query.collections
var albumTime: TimeInterval = 0.0
if collections != nil {
for collection in collections! {
if let albumTitle = collection.representativeItem?.value(forProperty: MPMediaItemPropertyAlbumTitle) {
for item in collection.items {
albumTime += item.playbackDuration
}
let duration = Int(albumTime)
let seconds = duration % 60
let minutes = duration / 60 % 60
let hours = duration / 3600
print("\"\(albumTitle)\" playback time: \(hours):\(minutes):\(seconds)")
albumTime = 0.0
}
}
}