异步Parse查询后更新自定义UITableViewCell UILabel

时间:2015-05-08 06:26:15

标签: ios uitableview swift parse-platform

不能为这个问题想出一个好名字...如果你能想到一个更好的名字,请随时编辑它:)

我正在使用 Swift Parse.com 构建iOS应用。

在我的应用中,我有一个主PFQueryTableViewController,它将我的Parse云中的一些数据加载到一些自定义的UITableViewCell中。

我希望单元格上的标签的一个值需要一段时间才能让Parse返回,所以我使用findObjectsInBackgroundWithBlock()来获取它。

在我cellForRowAtIndexPath加载我的表格时,我有以下代码:

// Set cells for each row of table
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell? {

    var cell: CustomTableViewCell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) as! CustomTableViewCell

    // Get Course Object objectID to hand to getCourseGrade function
    var anObjectID: String = object!.objectId!

    cell.setCell(name: object!["objectName"] as! String, code: object!["objectCode"] as! String, grade: getObjectGrade(anObjectID))

    return cell

}

在上面的代码中,我调用一个名为getObjectGrade的函数将值传递给我的setCell()函数,该函数在构建UITableView时设置customTableViewCells,运行如下(简化的):

func getObjectGrade(objectIdString: String) -> Float {

    // Set a starting value of objectGrade
    var objectGrade: Float = -1

    //...I set up a PFQuery

    query?.findObjectsInBackgroundWithBlock({ (objects: [AnyObject]?, error: NSError?) -> Void in

        //...here I am retrive the value I need from Parse --> valueFromParse

        objectGrade = valueFromParse

    })

    return objectGrade

}

现在,我非常清楚这不起作用......显然代码不会等待我的findObjectsInBackgroundWithBlock()代码运行,因此返回objectGrade之前它已经更新。

我的问题findObjectsInBackgroundWithBlock()代码部分完成后,如何设置单元格标签的值?

1 个答案:

答案 0 :(得分:0)

解决了!我将“getObjectGrade”函数移动到我的CustomTableViewCell文件并从那里调用它。 :)如果有人有这个问题,需要帮助,只需评论,我会尝试:)