不符合UITableViewDataSource - Parse应用程序

时间:2015-10-19 09:00:07

标签: ios swift uitableview parse-platform

我在与UITableView相关联的ViewController中使用TodayViewController。我想使用Parse数据库中的数据加载到TableView中。

这是我的TodayViewController课程:

import UIKit
class TodayViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet var InfoTableView: UITableView?

override func viewDidLoad() {
    super.viewDidLoad()

    InfoTableView!.delegate = self
    InfoTableView!.dataSource = self
    loadParseData()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func loadParseData() {

    let query : PFQuery = PFQuery(className: "News")
    query.orderByDescending("Headline")

}


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

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("NewCell") as! PFTableViewCell!
    if cell == nil {
        cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "NewCell")
    }

    //Extract values from the PFObject to display in the table cell

    if let Headline = object?["Headline"] as? String {
        cell?.textLabel?.text = Headline
    }
    if let Subtitle = object?["SubtitleText"] as? String {
        cell?.detailTextLabel?.text = Subtitle
    }

    return cell
}

出现此错误:

enter image description here

我该如何解决这个问题?整体结构有什么错误吗?如果需要,请提供更多信息。

2 个答案:

答案 0 :(得分:1)

是的,你没有确认协议UITableViewDataSource,因为你没有必要的方法

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

因此,您需要继承PFQueryTableViewController以使用您想要的方法

class TodayViewController: PFQueryTableViewController {
...
}

答案 1 :(得分:0)

我认为你已经在主类之外实现了tableview的所有委托方法,我的意思是会有一个开括号{并且紧密括号应该是所有方法的结尾。试试这个

import UIKit
class TodayViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet var InfoTableView: UITableView?

override func viewDidLoad() {
    super.viewDidLoad()

    InfoTableView!.delegate = self
    InfoTableView!.dataSource = self
    loadParseData()

    // Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func loadParseData() {

    let query : PFQuery = PFQuery(className: "News")
    query.orderByDescending("Headline")

}


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

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 10
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("NewCell") as! PFTableViewCell!
    if cell == nil {
        cell = PFTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "NewCell")
    }

    //Extract values from the PFObject to display in the table cell

    if let Headline = object?["Headline"] as? String {
        cell?.textLabel?.text = Headline
    }
    if let Subtitle = object?["SubtitleText"] as? String {
        cell?.detailTextLabel?.text = Subtitle
    }

    return cell


  }
}

希望这会有所帮助。