在 queryForTable() 中使用 UISwitch 更改 parse.com class

change parse.com class with UISwitch in queryForTable()

我尝试使用 UISwitch 在解析 class 之间切换。 我在 parse 中有两个 classes mainClass 和 recentClass ,我试图通过使用语法在它们之间切换 .

我已经声明了查询 在 class 的顶部像这样。

  @IBOutlet weak var barSwitch: UISwitch!

 var query =  PFQuery(className: "mainClass")  


 func switchChanged(barSwitch:UISwitch){

    if (barSwitch.on == true) {

        dispatch_async(dispatch_get_main_queue(),{ () -> Void in

          self.query = PFQuery(className: "recentClass")

            self.tableView.reloadData()

        }
    ) }
        else   {

        dispatch_async(dispatch_get_main_queue(),{ () -> Void in

            self.query = PFQuery(className: "mainClass")

            self.tableView.reloadData()
            print("button was pressed")

            }
        ) }

    }

我不知道如何在 queryForTable() 中使用该开关

 override func queryForTable() -> PFQuery {


    if (objects?.count == 0)
    {

        query.cachePolicy = PFCachePolicy.CacheThenNetwork


    }
    query.orderByAscending("SNo")

    return query
}

按照@Tim 的说法,我已经进行了编辑,但仍然无法正常工作。

您 re-declaring query 在 switch 函数中,因此它不会更改您的 class 变量。去掉func.

query前面的letvar

此外,在 dispatch 内,您可能需要输入 self.query.

要在 queryForTable 中调用 switchChanged 函数:

override func queryForTable() -> PFQuery {

    switchChanged(barSwitch)

    if (objects?.count == 0) {
        query.cachePolicy = PFCachePolicy.CacheThenNetwork
    }
    query.orderByAscending("SNo")

    return query
}