最后听过的歌曲(斯威夫特)

时间:2016-03-28 17:34:52

标签: ios swift mpmediaitem mpmediaquery

我想用最后听过的歌曲填充tableView。使用.nowPlayingItem我可以收到最后一首歌,但我怎样才能听到之前的歌曲?

我认为这个问题在Retrieve list of songs ordered by last play time in iOS已有答案,但是在Objective-C中我无法翻译它。或者在Swift中有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

这是你在Swift中的方法,

let start = NSDate().timeIntervalSince1970

let songsQuery = MPMediaQuery.songsQuery()
if let songsArray = songsQuery.items {
    let sortedArray = songsArray.sort { item1, item2 in
        if let lastPlayedDateForItem1 = item1.lastPlayedDate, 
           let lastPlayedDateForItem2 = item2.lastPlayedDate {
            return lastPlayedDateForItem1.compare(lastPlayedDateForItem2) == .OrderedDescending
        }
        return false
    }
}

答案 1 :(得分:2)

你可以这样做:

    let startTime: NSTimeInterval = NSDate().timeIntervalSince1970
    let songsQuery: MPMediaQuery = MPMediaQuery.songsQuery()
    let songsArray: [MPMediaItem] = songsQuery.items!
    let songsNSArray : NSArray = NSArray(array: songsArray)

    let descriptor: NSSortDescriptor = NSSortDescriptor(key: MPMediaItemPropertyLastPlayedDate, ascending: false)
    let sortedResults: NSArray = songsNSArray.sortedArrayUsingDescriptors([descriptor])


    let finishTime: NSTimeInterval = NSDate().timeIntervalSince1970
    NSLog("Execution took %f seconds to return %i results.", finishTime - startTime, sortedResults.count)

结果将存储在sortedResults数组