我正在尝试从 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/