2017-04-08 52 views

回答

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)") 

集合会给你按字母顺序排序,并通过groupingType选项(艺术家,专辑,流派等)的集合分组的MPMediaItems的阵列。如果您需要例如库中每个专辑的播放时间,那么您可以像这样迭代:

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 
      } 
     } 
    } 
相关问题