저는 지금 당장이 작업을하고 있습니다. 내 (스위프트 코드)입니다 : 키 라인이 쿼리에 할당, 노래와 노래, 다음 lastPlayedDate에 대한 검사가 비록
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는 nil 일 수 있습니다 (전에이 노래를 연주하지 않았습니다).
이 코드는 전체 라이브러리 5K 곡의 전체 검사를 수행하며 약 3 초가 걸립니다. 제 경우에는 "이후"이후로 나의 플레이 기록에만 관심이 있습니다
나는 각 음악 아이템의 재생 시간과 날짜 대신에 재생 시간과 날짜에 관심이 없습니다 – user3350794