SWIFT:在tableView中难以显示数据

时间:2015-10-18 13:12:38

标签: ios swift xcode7

我正在尝试将数据从Parse显示到下面的tableView控制器上。由于某种原因,数据没有显示在tableView上(即行是空白的)。我不认为从Parse查询的数据被附加到数组。我想知道我在这里做错了什么。

这是当前的输出:

enter image description here

我正在使用标识符为“CellTrack”类“TrackTableViewCell”的自定义原型单元格,如下所示:

enter image description here

enter image description here

这是我在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
}

}

3 个答案:

答案 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?