Parse platform 解析加载图像Swift 3.0
我正在运行自己的解析服务器,一切正常,但是 我无法将PFFile转换为UIImage,这是它向我抛出的错误: 无法将类型为“(NSData?,NSError?)->Void”的值转换为预期的参数类型PFDataResultBlock” 以下是我使用的代码:Parse platform 解析加载图像Swift 3.0,parse-platform,uiimage,backend,swift3,Parse Platform,Uiimage,Backend,Swift3,我正在运行自己的解析服务器,一切正常,但是 我无法将PFFile转换为UIImage,这是它向我抛出的错误: 无法将类型为“(NSData?,NSError?)->Void”的值转换为预期的参数类型PFDataResultBlock” 以下是我使用的代码: var imageFromParse = object.object(forKey: "ProfilePicture") as! PFFile! imageFromParse!.getDataI
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中都能完美地发挥作用。
谢谢您的帮助。我在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集合,然后获取第一个对象(当然只是为了测试),然后读取文件。请注意,为了获取test列下存在的PFFile,我使用了objectForKey。在我得到文件后,我调用getDataInBackground获取数据,从数据创建UIImage并更新我的imageView
一切按预期进行。。
试着运行这段代码,看看它是否适合您。我在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集合,然后获取第一个对象(当然只是为了测试),然后读取文件。请注意,为了获取test列下存在的PFFile,我使用了objectForKey。在我得到文件后,我调用getDataInBackground获取数据,从数据创建UIImage并更新我的imageView
一切按预期进行。。
尝试运行此代码,看看它是否适合您。使用
数据
和错误
而不是NSData
和NSError
使用数据
和错误
而不是NSData
和NSError
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将要求所有标签,这意味着方法名称不再详细说明其参数。在实践中,这通常意味着方法名称的最后一部分被移动为第一个参数的名称。
有关更多信息,请访问: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将要求所有标签,这意味着方法名称不再详细说明其参数。在实践中,这通常意味着方法名称的最后一部分被移动为第一个参数的名称。
查看更多信息:它甚至不允许我使用
findobjectsinbackgroundithblock
xcode将其更改为findObjectsInBackground
这真的很奇怪,您是否使用最新的解析SDK?是的,我通过cocoapodsweird添加了解析,因为它已重命名为findObjectsInBackground(block:)
但是我在文档中找不到任何东西来处理这个问题……你能用cocoapods添加解析吗?我还能做的就是将我的项目上传到github,这样你就可以克隆它并测试它是否适合你。它甚至不允许我使用findObjectsInBackgroundWithBlock
xcode将其更改为findObjectsInBackground
真奇怪,你使用的是最新的Parse SDK吗?是的,我通过CocoapodsWird添加了Parse,因为它已经被重命名为findObjectsInBackground(block:)
,但是我在文档中找不到任何东西来处理这个问题……你能用cocoapods添加解析吗?我还能做的是将我的项目上传到github,这样你就可以克隆它并测试它是否适合你..我发现使用缩短版本的签名要容易得多:“(数据,错误)in”。我发现使用缩短版本的签名要容易得多:“(数据,错误)in”。