2016-08-04 114 views
1

我运行过程中出现我自己的解析服务器和所有工作正常,但 我无法将PFFile转换为一个UIImage解析加载图像,这是它抛出在我的错误:雨燕3.0

Cannot convert value of type '(NSData?, NSError?) -> Void' to expected argument type 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中的完美工作。 感谢您的帮助。

回答

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 一切按预期工作。 尝试运行此代码,看看它是否适合你。

+0

它甚至不会允许我使用'findObjectsInBackgroundWithBlock' xcode将其更改为'findObjectsInBackground'这真的很奇怪,您使用的是最新的解析SDK吗? –

+0

是的我通过cocoapods添加了解析 –

+0

奇怪,因为它已被重命名为'findObjectsInBackground(block:)',但我找不到任何文件来处理这个... –

2

使用DataError代替NSDataNSError

3

雨燕3.0:

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

     if error == nil { 

     } 
    }) 

} 

主要更新:

(数据:NSData的,错误:NSError)在

已更新为:

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

和:

斯威夫特3使除非另行指定所需的所有标签,这意味着方法名称不再详细说明其参数。实际上,这通常意味着方法名称的最后部分被移动为第一个参数的名称。 了解更多:https://www.hackingwithswift.com/swift3

+1

我发现使用缩写版的签名要容易得多:“(data,error)in”。 – weePee