2016-02-08 27 views
0

有很多類似的問題,但他們沒有幫助我,所以我只是不知道該怎麼做,但問。所以我這是怎麼編碼的UIImage:NSDataBase64DecodingOptions總是返回零

 let data: NSData = UIImagePNGRepresentation(imageResized)! 
     let base64String: NSString = data.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) 

和解碼(如建議here):

if let range = base64.rangeOfString("data:image/png;base64,", options: .AnchoredSearch) { 
       base64.removeRange(range) 
      } 
      let decodedData = NSData(base64EncodedString: base64, options: NSDataBase64DecodingOptions(rawValue: 0)) 
      if let decodedImage = UIImage(data: decodedData!) { 
       self.imageList.append(decodedImage) 
      } 

但應用程序崩潰初始化decodedData的時候,我想不通爲什麼。 我檢查了我的base64字符串here,它返回圖片。 任何幫助將不勝感激!

回答

1

試試這個:

if let decodedData = NSData(base64EncodedString: base64, options:NSDataBase64DecodingOptions.IgnoreUnknownCharacters){ 
     if(decodedData.length > 0){ 
      let imageDecodeData = UIImage(data: decodedData)! 
     } 
     else{ 
      print("error") 
     } 
    } 
+0

哦,謝謝你!這是準時來的 –

0

let decodedData更換符合:

let decodedData = NSData(base64EncodedString: base64, options: []) 

而且還確保您使用正確的變量:

// 1. This should be a variable if you're mutating it. 
let base64String = data... 

// 2. You should probably do this on your base64String 
if let range = base64.rangeOfString(...) 
+0

如果Base64是的NSString, encodedData顯示錯誤 - 讓decodeData = NSData(base64EncodedString:base64 as String,options:[]) –

+0

您不需要將其轉換爲'NSString',請參閱更新後的答案。 – xoudini

+0

base64是一個變量,我正在做rangeOfString(),但是我的base64字符串在此範圍之前有效。我更新了讓decodeData像你所建議的,但結果相同 –