解析使用块获取数据而不将值赋值给范围

时间:2015-08-17 02:23:45

标签: swift parse-platform tableview

有问题要分配uiImageFile = image!。如果它试图分配self.myImage = image!其中myImage是一个全局变量,它的工作原理。

有可能做到吗?

代码正在检索图像,如果直接指向,单元格也会拍摄图像。只是这座桥不起作用。它只适用于图像。

println("TESTSTRING\(indexPath.row)")上方的以下测试行return也可以从testString = "\(indexPath.row)"内的getDataInBackgroundWithBlock获取并打印值。

对于问题标题感到抱歉。不知道如何用一句话来恢复这个问题。

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

        let cellIdentifier = "Cell"
        let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! HobbieFeedTableViewCell
        let object: PFObject = self.timelineData.objectAtIndex(indexPath.row) as! PFObject

        var myText = object.objectForKey("postText") as? String

        let userImageFile = object.objectForKey("postImage") as? PFFile
        var uiImageFile = UIImage()
        var testString = String()

        println(userImageFile, indexPath.row)

        if userImageFile != nil {
            userImageFile?.getDataInBackgroundWithBlock({ (imageData:NSData?, error:NSError?) -> Void in
                if error == nil {

                    if let myImageData = imageData {
                        let image = UIImage(data:myImageData)
                        self.myImage = image!
                        uiImageFile = image!
                        testString = "\(indexPath.row)"
                    }
                }
                }, progressBlock: { (percent: Int32) -> Void in
            })
        }

        cell.cellTitle.text = myText
        cell.cellImage.image = uiImageFile
//                cell.cellImage.image = myImage

        println("TESTSTRING\(indexPath.row)")
        return cell
    }

1 个答案:

答案 0 :(得分:0)

  

cell.cellImage.image = uiImageFile

在检索到uiImageFile之前执行。这是因为

  

getDataInBackgroundWithBlock   在检索完成之前立即返回。

您可以通过以下方式修复它:(1)在viewDidLoad函数中将所有图像检索到本地数组中(2)在检索完成时使用推送通知以触发tableview.reload