如何从 MPMediaItemCollection 中提取艺术家值

How to pull the artist value from MPMediaItemCollection

为什么下面的结果是一个充满 "Artist" 的表格视图,而不是一个充满实际艺术家名字的表格视图?我哪里做错了?如何从 collection 中提取艺术家值?感谢所有帮助...

var tableData = MPMediaQuery.artistsQuery()

override func viewDidLoad() {
    super.viewDidLoad()
    self.artistTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    tableData.groupingType = MPMediaGrouping.Artist
}

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return self.tableData.collections!.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell     {
    let cell: UITableViewCell = self.artistTableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell
    let artist: MPMediaItemCollection = tableData.collections![indexPath.row]

    if artist.valueForProperty(MPMediaItemPropertyArtist) == nil {
        cell.textLabel?.text = "Artist" as String
    } else {
    let artistName = artist.valueForProperty(MPMediaItemPropertyArtist) as! NSString
    cell.textLabel?.text = artistName as String
    }
    return cell
}

您通过 representativeItem 访问 MPMediaItemCollection 的属性。您可以像这样获取艺术家的名字:

let artist : MPMediaItemCollection = tableData.collections![indexPath.row]
let artistName = artist.representativeItem.artist ?? "Unknown Artist"

虽然如果我是你,我不会强行解包 tableData.collections 因为如果你的用户有一个空的 iTunes 库,那么该行将导致应用程序崩溃。