2016-03-28 4 views

Antwort

2

Man könnte so etwas tun:

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) 

Die Ergebnisse im Array sortedResults gespeichert würden

+0

Um etwas wie Titel zu bekommen, könntest du einfach eine Schleife benutzen, um 'sortedResults [i] .title' – wottle

+0

groß zu bekommen, welche Art von Schleife? –

+0

Nun, weil Sie dies in einer Tabellenansicht tun, sollten Sie die Liste der Songs erhalten, wenn die Ansicht geladen wird (oder irgendwo außerhalb des cellForRowAtIndexPath). Dann würden Sie in 'cellForRowAtIndexPath' einfach das Zellenlabel auf' sortedResults [indexPath.row] .title' setzen. Wenn Sie Hilfe bei der Implementierung eines 'UITableView' brauchen, würde ich empfehlen, das auf eine neue Frage zu verschieben, da diese zu weit gefasst ist hier hinzufügen. – wottle

2

Dies ist, wie Sie es in Swift zu tun,

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 
    } 
} 
+0

Thank you! Wie kann ich meine TableView-Zellen damit füllen? Weil 'sortedArray' kein Element wie .title oder .artist hat –

+0

Für eine große MDeia-Bibliothek würde ich denken, dass der' NSSortDescriptor' schneller wäre. Ich kann das nicht bestätigen, da ich nur zwei Songs auf meinem Gerät habe. Für eine kleine Bibliothek wie meine scheint es schneller zu sein. – wottle