解析加载图像 Swift 3.0
Posted
技术标签:
【中文标题】解析加载图像 Swift 3.0【英文标题】:Parse load Images Swift 3.0 【发布时间】:2016-08-04 14:01:08 【问题描述】:我正在运行我自己的解析服务器,一切正常,但是 我无法将 PFFile 转换为 UIImage,这是它向我抛出的错误:
无法将'(NSData?, NSError?) -> Void' 类型的值转换为预期的参数类型 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】:斯威夫特 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
【讨论】:
我发现使用签名的缩短版本要容易得多:“(data, error) in”。【参考方案2】:使用Data
和Error
代替NSData
和NSError
【讨论】:
【参考方案3】:我在 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 来获取存在于 test 列下的 PFFile。获得文件后,我调用 getDataInBackground 来获取数据,从数据创建 UIImage 并更新我的 imageView 一切都按预期工作.. 尝试运行此代码,看看它是否适合您。
【讨论】:
它甚至不允许我使用findObjectsInBackgroundWithBlock
xcode 将其更改为findObjectsInBackground
真的很奇怪,您使用的是最新的 Parse SDK 吗?
是的,我通过 cocoapods 添加了解析
很奇怪,因为它已被重命名为 findObjectsInBackground(block:)
但我在文档中找不到任何内容来处理这个...
你能用 cocoapods 添加解析吗?我还能做的是将我的项目上传到 github,这样你就可以克隆它并测试它是否适合你..以上是关于解析加载图像 Swift 3.0的主要内容,如果未能解决你的问题,请参考以下文章