2015-09-23 49 views
-1

我正在使用Parse作爲後端的應用程序。每當我嘗試加載一個圖像時,我得到的NSData不是空的,但每當我嘗試將其轉換爲UIImage時,我得到的圖像是UIImage不能正確轉換NSData

我已經檢查了Parse上的所有圖像,並且可以從數據庫中看到/獲取所有圖像。我還重新上傳了這些圖片,以防萬一他們出了什麼問題。

下面是一段代碼,我得到的NSData並將其轉換爲的UIImage:

let myImage = object.objectForKey("imagem") as! PFFile 
myImage.getDataInBackgroundWithBlock({(imageData : NSData?, error : NSError?) -> Void in 
       if error == nil { 
        if let imageData = imageData{ 
          if let newImage = UIImage(data: imageData){ 
           myClass.imagem = newImage 
          }  
         } 
        } 
        self.collectionView?.reloadData() 
       }) 
+0

你是如何轉換的圖像轉換成數據? –

+0

你在哪裏檢查圖像是否爲零? 'getDataInBackgroundWithBlock()'是一個可以導致你觀察的異步函數。當您檢查圖像時,該功能未完成。因此,請提供您檢查圖像是否爲零的信息。 – dehlen

+0

每當我上傳Parse上的圖像時,我都會轉換它。我已經多次成功完成了這個過程。 –

回答

0

事實證明,我所做的是正確的,但我正在通過代理工作,每當數據被髮送到我的應用程序,它不是返回完整的NSData。所以問題在於代理而不是代碼。感謝您的回覆。

0

試試這個代碼。我希望它能幫助你。

let userImageFile = anotherPhoto["imageFile"] as PFFile 

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

有關詳細信息,您可以參考解析文檔。看到這https://www.parse.com/docs/ios/guide#files-images

0

嘗試使用下面的代碼片段

if let imageData = imageData 
{ 
var newImage : UIImage! = UIImage(data: imageData!) 
if image 
{ 
    myClass.imagem = newImage 
} 
}