Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 异步解析查询后更新自定义UITableViewCell UILabel_Ios_Uitableview_Swift_Parse Platform - Fatal编程技术网

Ios 异步解析查询后更新自定义UITableViewCell UILabel

Ios 异步解析查询后更新自定义UITableViewCell UILabel,ios,uitableview,swift,parse-platform,Ios,Uitableview,Swift,Parse Platform,想不出这个问题的好名字……如果你能想出更好的名字,请随意编辑:) 我正在使用Swift和Parse.com构建一个iOS应用程序 在我的应用程序中,我有一个mainPFQueryTableViewController,它将一些数据从解析云中加载到一些定制的uitableviewcell中 我希望单元格上的标签的其中一个值需要一段时间才能返回,因此我使用findobjectsinbackgroundithblock()获取它 在我的cellforrowatinexpath中,当我加载我的表时,我有

想不出这个问题的好名字……如果你能想出更好的名字,请随意编辑:)

我正在使用SwiftParse.com构建一个iOS应用程序

在我的应用程序中,我有一个main
PFQueryTableViewController
,它将一些数据从解析云中加载到一些定制的uitableviewcell中

我希望单元格上的标签的其中一个值需要一段时间才能返回,因此我使用
findobjectsinbackgroundithblock()
获取它

在我的
cellforrowatinexpath
中,当我加载我的表时,我有以下代码:

// 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,其运行如下(简化):

现在,我非常清楚这将不起作用……显然,代码不会等待我的
findobjectsinbackgroundithblock()
代码运行,因此在更新之前返回
objectGrade


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

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

@Kutyel,这个问题完全不同。我从解析中获取数据没有问题,我不确定如何在异步函数之后设置自定义单元格的标签值。关键还在于我需要维护对单元格的引用…这是一个棘手的部分。如果你在后台做一个过程,那么不要依赖于return语句。我相信这段代码
block
将在下载完成后执行,因此请调用另一个助手方法,该方法可以触发单元格更新,并在主线程上执行(在解析中找到等价项)。是的,Gandalf,谢谢:)现在解决了!非常感谢。
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

}