通过Parse.com下载将NSData转换为UIImage的问题

时间:2015-07-16 18:53:49

标签: ios swift parse-platform uiimage nsdata

我有一个奇怪的问题。我的应用程序在iPhone 6模拟器中工作正常,但在任何其他模拟器或我的iDevice上都没有。这是主要代码

 query.findObjectsInBackgroundWithBlock {
        (objects, error) -> Void in
        if(error == nil){


            let imageObjects = objects as! [PFObject]


            if let myObjects = objects {
                for object in myObjects {

                     let myTitle = object["imageName"] as! NSString
                     println(myTitle)
                    let thumbNail = object["imageFile"] as! PFFile
                   // println(thumbNail)
                thumbNail.getDataInBackgroundWithBlock({
                        (imageData: NSData?, error: NSError?) -> Void in
                        if (error == nil) {

                            self.imageArray.append(imageData!)
                            let image = UIImage(data:imageData!)

                            self.imageView.contentMode = .ScaleAspectFit
                            self.imageView.image=image
                        }

                    })//getDataInBackgroundWithBlock - end

                }//for - end

            }

        }//end of if
        else{
            println("Error in retrieving \(error)")
        }

    }//findObjectsInBackgroundWithblock - end

我认为这条线是罪魁祸首

let image = UIImage(data:imageData!)

但我不确定为什么。除了iPhone 6仿真器之外,“image”在所有其他设备中返回nil。任何建议都会很棒。 感谢

注意:图像在iPhone 6模拟器中显示得很好。我正在使用故事板和未经检查的自动布局。

2 个答案:

答案 0 :(得分:0)

应该不存在应用程序仅适用于一个模拟器设置的情况。重置模拟器应该可以解决问题。

答案 1 :(得分:0)

一种可能性是您之前已成功下载此数据,而Parse已在您的iPhone应用程序中缓存了响应,但您已远程更改了PFObject并删除了图像数据。或者可能更改了代码。

由于Parse.com会缓存图片,因此Parse.com缓存可能仅适用于此设备。

您可以使用调试器,或者更糟糕的是,使用NSLog来确定什么是nil。您需要确定imageData是否回来为零。另外,你有没有理由认为imageData是非空的?我指的是对imageData!的引用 - 这似乎很危险。仅仅因为没有错误并不意味着imageData是非空的。