解析加载图片Swift 3.0

时间:2016-08-04 14:01:09

标签: parse-platform uiimage backend swift3

我运行我自己的解析服务器,一切正常但是 我无法将A PFFile转换为UIImage,这是它给我的错误:

  

无法转换类型的值'(NSData?,NSError?) - >虚空'预期参数类型PFDataResultBlock'

以下是我使用的代码:

var imageFromParse = object.object(forKey: "ProfilePicture") as! PFFile!
                        imageFromParse!.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in
                            var image: UIImage! = UIImage(data: imageData!)!
                        })

所有这些都曾经在Swift 2.3中完美运行。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

Swift 3.0:

if let imageFromParse = user.object(forKey: "ProfilePicture") as? PFFile {
    imageFromParse.getDataInBackground(block: {
        (data: Data?, error: Error?) in

        if error == nil {

        }
    })

}

主要更新:

(数据: NSData ?,错误: NSError ?)

已更新为:

(数据:数据?,错误:错误?)

除非另有说明,否则Swift 3会生成所有标签,这意味着方法名称不再详细说明其参数。实际上,这通常意味着方法名称的最后一部分被移动为第一个参数的名称。 请访问:https://www.hackingwithswift.com/swift3

了解更多信息

答案 1 :(得分:2)

使用DataError代替NSDataNSError

答案 2 :(得分:1)

我在swift 3.0上做了一些测试,以下代码对我有用:

    let query = PFQuery(className: "FileTest")

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

        let firstObject = objects?.first as PFObject!
        let objectFile = firstObject.objectForKey("file") as! PFFile
        objectFile.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in
            let image = UIImage(data: imageData!)
            if image != nil {
                self.imageOutlet.image = image
            }

        })
    }

在这段代码中我首先获取所有 FileTest 集合,然后我拿第一个对象(当然只是为了测试),然后我读取文件。请注意我使用 objectForKey 以获取测试列下存在的PFFile。我有文件后,我调用 getDataInBackground 来获取数据,从数据创建UIImage并更新我的imageView 一切都按预期工作.. 尝试运行此代码,看看它是否适合您。