在 tableview Parse 中显示来自类子类别的数据

Posted

技术标签:

【中文标题】在 tableview Parse 中显示来自类子类别的数据【英文标题】:Display data from class subcategory in tableview Parse 【发布时间】:2015-03-25 21:49:08 【问题描述】:

我在 Parse 后端有两个类。 课程: - 类别->类别(图像,名称) - 子类别->Unterkategorien(图像,名称,类别(指针))

我想要每个班级都有一个 TableView。应该是这样,我在第一个 TableView 中选择了一个 Category,然后来到下一个 TableView,其中包含所选 Category 的所有子类别。

通过以下代码,我显示了 Category 类中的数据:

import UIKit

class KategorienTableViewController: PFQueryTableViewController 

// Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) 
    super.init(style: style, className: className)


required init(coder aDecoder: NSCoder) 
    super.init(coder: aDecoder)

    // Configure the PFQueryTableView
    self.parseClassName = "Kategorien"
    self.textKey = "name"
    self.pullToRefreshEnabled = true
    self.paginationEnabled = false


// Define the query that will provide the data for the table view
override func queryForTable() -> PFQuery! 
    var query = PFQuery(className: "Kategorien")
    query.orderByAscending("name")
    return query


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell 

    var cell = tableView.dequeueReusableCellWithIdentifier("KategorienTableCell") as KategorienTableCell!
    if cell == nil 
        cell = KategorienTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "KategorienTableCell")
    

    // Extract values from the PFObject to display in the table cell
    cell.name.text = object["name"] as String!

    var thumbnail = object["bild"] as PFFile
    var initialThumbnail = UIImage(named: "Kategorien")
    cell.bild.image = initialThumbnail
    cell.bild.file = thumbnail
    cell.bild.loadInBackground()

    return cell


 // In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 

    // Get the new view controller using [segue destinationViewController].
    var unterkategorienScene = segue.destinationViewController as UnterkategorienTableViewController

    // Pass the selected object to the unterkategorien view controller.
    if let indexPath = self.tableView.indexPathForSelectedRow() 
        let row = Int(indexPath.row)
        unterkategorienScene.aktuellesObject = objects[row] as? PFObject
        //println(unterkategorienScene.aktuellesObject)
    


现在我有一个问题,我不知道如何在第二个 TableViewController 中显示所选类别的所有子类别 (unterkategorien)。子类别有一个指向类别的 Parse 指针,但在这种情况下我应该如何使用它? 目前,当我第一次在第一个 TableView 中选择一个类别时,它会在第二个 Tableview 中显示所有子类别。

我的第二个 TableViewController 的代码实际上是这样的:

import UIKit

class UnterkategorienTableViewController: PFQueryTableViewController 
var aktuellesObject : PFObject?



  // Initialise the PFQueryTable tableview
override init!(style: UITableViewStyle, className: String!) 
    super.init(style: style, className: className)


required init(coder aDecoder: NSCoder) 
    super.init(coder: aDecoder)

    // Configure the PFQueryTableView
    self.parseClassName = "Unterkategorien"




override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject) -> PFTableViewCell 


    var cell = tableView.dequeueReusableCellWithIdentifier("UnterkategorienTableCell") as UnterkategorienTableCell!
    if cell == nil 
        cell = UnterkategorienTableCell(style: UITableViewCellStyle.Default, reuseIdentifier: "UnterkategorienTableCell")
    

    if let objecti = aktuellesObject?

        // Extract values from the PFObject to display in the table cell
        cell.unterkategorienName.text = object["name"] as String!
        //println(object["name"].objectId)

        var thumbnail = object["bild"] as PFFile
        var initialThumbnail = UIImage(named: "Kategorien")
        cell.unterkategorienBild.image = initialThumbnail
        cell.unterkategorienBild.file = thumbnail
        cell.unterkategorienBild.loadInBackground()
    

    return cell



【问题讨论】:

【参考方案1】:

您为什么不创建您在主 (KategorienTableViewController) 中创建的名为 queryForTable() 的 void? 但是你需要通过 prepareForSegue 传递的当前类别(你已经做过的),但你需要传递类别而不是子类别。

看起来像这样:

类别表视图控制器:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 

    // Get the new view controller using [segue destinationViewController].
    var unterkategorienScene = segue.destinationViewController as UnterkategorienTableViewController

    // Pass the selected object to the unterkategorien view controller.
    if let indexPath = self.tableView.indexPathForSelectedRow() 
        let row = Int(indexPath.row)
        unterkategorienScene.aktuellesObject = objects[row] as? PFObject
        //println(unterkategorienScene.aktuellesObject)
    

UnterkategorienTableViewController:

override func queryForTable() -> PFQuery! 
    var query = PFQuery(className: self.parseClassName)
    query.whereKey("category", equalTo: aktuellesObject)
    return query

ps。 Wie ich sehe sprichst du Deutsch, probier nicht Deutsch und Englisch während dem Programmieren zu vermischen das sorgt für Chaos。

【讨论】:

谢谢,就是这样。 PS: Vielen Dank für den Tipp.

以上是关于在 tableview Parse 中显示来自类子类别的数据的主要内容,如果未能解决你的问题,请参考以下文章

PFImageView 问题:无法在表格视图单元格中显示来自 Parse 的图像

如何在 Swift Xcode 6.4 的 TableView 中显示 Parse 数组

TableView Parse Swift 数据未显示在应用程序中

JSON Parse iOS Array of Dictionaries 解析成数组只显示 tableview 中的最后一个对象

iOS 自定义 TableViewCell 类子视图返回 null

parse.com swift - 在 tableView 单元格中取消固定和删除对象