Я работаю с этим прямо сейчас. Мой (Swift код) является:
func getPlaysSince(since:NSDate, onSuccess: (tracks: [MediaItem])->(), onFail: (error: NSError?)->()) {
var rValue = [MediaItem]()
let timeInterval = since.timeIntervalSince1970
let query = MPMediaQuery.songsQuery()
let songs = query.items
Logger.logMessage(domain: "Data", level: .Minor, "Checking \(songs.count) songs for those since \(since)")
let then = NSDate()
for song in songs {
if let lastPlayedDate = song.lastPlayedDate {
if lastPlayedDate != nil {
if lastPlayedDate.timeIntervalSince1970 > timeInterval {
Logger.logMessage(domain: "Data", level: .Minor, "\(song.title) at \(lastPlayedDate)")
let item:MediaItem = MediaItem(mediaItem: song as! MPMediaItem)
rValue.append(item)
}
}
}
}
let taken = NSDate().timeIntervalSinceDate(then)
Logger.logMessage(domain: "Data", level: .Minor, "scanned in \(taken) seconds")
onSuccess(tracks: rValue)
}
Я включать всю свою функцию, хотя основные линии являются задания для запроса, песни и песни, а затем чек на lastPlayedDate. lastPlayedDate может быть nil (никогда не играл эту песню раньше).
Этот код выполняет полную проверку всей моей библиотеки 5K и занимает около 3 секунд. В моем случае меня интересует только моя история игры, так как «с тех пор»
Меня не интересует продолжительность ... Скорее всего время воспроизведения и даты для каждого элемента песни – user3350794