2016-02-08 3 views
0

Есть много подобных вопросов, но не из них помогли мне, поэтому я просто не знаю, что делать, но спрашиваю. Так что это, как я кодировать UIImage:NSDataBase64DecodingOptions всегда возвращает nil

 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, decodedData показывает ошибку - let decodedData = NSData (base64EncodedString: base64 as String, options: []) –

+0

Вам не нужно указывать его как 'NSString', см. Обновленный ответ. – xoudini

+0

base64 - переменная, и я делаю rangeOfString(), но моя base64 строка действительна до этого диапазона. Я обновил let decodedData, как вы предполагали, но с тем же результатом –

Смежные вопросы