swift - 在 Swift 中从解析中检索图像

标签 swift parse-platform

我正在尝试从 Parse 检索一个 PFObject,它的类名(类型)为 Sticker,它有一个名为 imageFile 的 File 类型属性,其中包含 .png 图像。然后,我尝试设置现有的 UIImageView 来将该图像解析为其 UIImage。

这是我的代码。请向右滚动查看我的代码注释:

import UIKit
import Parse

class DressingRoomViewController:   UIViewController,
                                    UICollectionViewDelegateFlowLayout,
                                    UICollectionViewDataSource {

    @IBOutlet weak var MirrorImageView: UIImageView!
    @IBOutlet weak var collectionView: UICollectionView!
    @IBOutlet weak var heightConstraint: NSLayoutConstraint!
    let identifier = "cellIdentifier"
    let dataSource = DataSource()
    let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
    let cellSpacing: CGFloat = 2
    let cellsPerRow: CGFloat = 6
    let numberOfItems = 12

    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView.dataSource = self



        var query = PFQuery(className:"Sticker")
        query.getObjectInBackgroundWithId("WGYIYs0crU") { 
            (sticker: PFObject?, error: NSError?) -> Void in
            if error == nil && sticker != nil {
                println(sticker)
                if let stickerImage = sticker!.objectForKey("imageFile") as? NSData { // it goes from this line, straight to the bottom of the function, without going into the if statement or even the else statement.
                    let file = PFFile(name:"resume.txt", data:stickerImage)




                    file.getDataInBackgroundWithBlock {
                        (imageData: NSData?, error: NSError?) -> Void in
                        if (error == nil) {
                            if let imageData = imageData {
                                let image = UIImage(data:imageData)
                                self.MirrorImageView.image = image
                            }
                        } else {
                            println(error)
                        }
                    }
                }
            } else {
                println(error)
            }
        }
    }

为什么代码没有运行超过代码注释?

编辑:刚刚意识到我没有用于 if 语句的 else 语句。我放入一个,然后将其放入 else 语句中。如何让执行进入 if 语句?

最佳答案

由于它跳过了 if block ,sticker!.objectForKey("imageFile") as? NSData 必须为nil。由于一些可能的原因,它可能为零。首先,确保您的 Sticker 类实际上具有“imageFile”属性。其次,确保对象“WGYIYs0crU”实际上在该属性中保存了数据。您可以通过登录解析 Web 控制台轻松检查这些内容。

但是,我怀疑问题是您试图向下转换为 NSData。文件通常在 Parse 上保存为 PFFile,因此请尝试转换为 PFFile,并跳过创建新 PFFile 的行。像这样的事情:

var query = PFQuery(className:"Sticker")

query.getObjectInBackgroundWithId("WGYIYs0crU") {
    (sticker: PFObject?, error: NSError?) -> Void in

    // Also, checking for nil isn't really necessary, since that's what if let does.
    if let stickerImage = sticker?["imageFile"] as? PFFile {
        file.getDataInBackgroundWithBlock {
            (imageData: NSData?, error: NSError?) -> Void in

            if let imageData = imageData {
                let image = UIImage(data:imageData)
                self.MirrorImageView.image = image
            }

            if let downloadError = error {
                println(downloadError.localizedDescription)
            }
        }
    }

    if let imageError = error {
        println(imageError.localizedDescription)
    }
}

希望有帮助。

关于swift - 在 Swift 中从解析中检索图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491980/

相关文章:

swift - T.Type 和 [T.Type] 之间的不同行为

ios - 如何定位 Google 地点自动完成功能?

ios - 按日期解析的有组织的组合数组

ios - Swift 3 上传图片到 Parse Server

asp.net-mvc - 将 ParseUser 对象注入(inject)到 Controller

ios - UIView 的动画约束(作为主视图的 subview )

swift - 我可以扩展 Swift 保留字 "enum"吗?

ios - 渐变图层在 Xib 文件中的纵向模式下不起作用

java - ParseUser.logout() 的错误行为

android - 从 Parse.com 检索数据到 ArrayList<Object>