我正在尝试将数据从Parse显示到下面的tableView控制器上。由于某种原因,数据没有显示在tableView上(即行是空白的)。我不认为从Parse查询的数据被附加到数组。我想知道我在这里做错了什么。
这是当前的输出:
我正在使用标识符为“CellTrack”类“TrackTableViewCell”的自定义原型单元格,如下所示:
这是我在TableViewController文件中的代码:
import UIKit
import Parse
class MusicPlaylistTableViewController: UITableViewController {
var usernames = [String]()
var songs = [String]()
var dates = [String]()
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(animated: Bool) {
var query = PFQuery(className:"PlaylistData")
query.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
if error == nil {
if let objects = objects! as? [PFObject] {
self.usernames.removeAll()
self.songs.removeAll()
self.dates.removeAll()
for object in objects {
let username = object["username"] as? String
self.usernames.append(username!)
print("added username")
let track = object["song"] as? String
self.songs.append(track!)
let date = object["createdAt"] as? String
self.dates.append(date!)
self.tableView.reloadData()
}
}
} else {
print(error)
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return usernames.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CellTrack", forIndexPath: indexPath) as! TrackTableViewCell
cell.username.text = usernames[indexPath.row]
cell.songTitle.text = songs[indexPath.row]
cell.CreatedOn.text = dates[indexPath.row]
return cell
}
}
这是我在“TrackTableViewCell.swift”类中的代码:
import UIKit
class TrackTableViewCell: UITableViewCell {
@IBOutlet weak var songTitle: UILabel!
@IBOutlet weak var username: UILabel!
@IBOutlet weak var CreatedOn: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
答案 0 :(得分:0)
在主线程中执行tableView.reloadData()
。
dispatch_async(dispatch_get_main_queue(), {
self.tableViewCell.reloadData()
})
答案 1 :(得分:0)
尝试做一个后卫让我们看看这些值是否真的以字符串形式返回。我的猜测是,创造的价值永远不会回来。试试看,让我知道。
guard let username = object["username"] as? String else {
print ("could not get username")
}
self.usernames.append(username)
print("added username")
guard let track = object["song"] as? String else {
print ("could not get song")
return
}
self.songs.append(track)
guard let date = object["createdAt"] as? String else {
print ("could not get createdAt")
return}
self.dates.append(date!)
答案 2 :(得分:0)
WKWEBVIEW
返回值
具有关联标识符的UITableViewCell对象,如果可重用单元队列中不存在此类对象,则为nil。
func dequeueReusableCellWithIdentifier(_ identifier: String) -> UITableViewCell?