Swift - UITableView

Swift - UITableView

它是一个用于音频播放列表的 UITableView

import UIKit
import MediaPlayer

class TableView: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet var tableView: UITableView!

var tableData = MPMediaQuery.playlistsQuery()

override func viewDidLoad() {
    super.viewDidLoad()


    self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

    self.tableView.reloadData()

}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell     {

    var cell: UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell

    let playlist: MPMediaPlaylist = tableData.collections[indexPath.row] as MPMediaPlaylist
    let playlistName = playlist.valueForProperty(MPMediaPlaylistPropertyName) as NSString
    cell.textLabel?.text = playlistName

    return cell
}

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    println("Row \(indexPath.row) selected")
}
}

如何更改它,在 TableView 中有一个相册?

我试着改变var tableData = MPMediaQuery.playlistsQuery()

var tableData = MPMediaQuery.albumsQuery()

但它不正确,xcode 给我一个错误:0x1002364b0: brk #1

您所做的是一个好的开始,将 tableData 更改为 MPMediaQuery.albumsQuery 而不是 MPMediaQuery.playlistsQuery 的结果。但是,请查看您的 cellForRowAtIndexPath 方法,特别是以下三行,其中定义了每个单元格的内容:

let playlist: MPMediaPlaylist = tableData.collections[indexPath.row] as MPMediaPlaylist
let playlistName = playlist.valueForProperty(MPMediaPlaylistPropertyName) as NSString
cell.textLabel?.text = playlistName

此代码预期 tableData 包含一个集合 属性,其中包含 MPMediaPlaylist 个对象,但包含 MPMediaQuery.albumsQuery method returns a MPMediaQuery object with a collections property that contains an MPMediaItem 个对象。