2015-04-03 4 views
1

Я пытаюсь разобрать base64-тип в imageData. Но мой NSDataBase64DecodingOptions возвращает nil. Я напечатал decodedData, и это нуль. Мой код здесьNSDataBase64DecodingOptions возвращает значение nil

var base64String = arrayText["auto_type_android_img"] as String 

println("basestring64 is \(base64String)") 

let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0)) 

println("base string is: \(decodedData)") 
if let decodedImage = UIImage(data: decodedData!) { 

    imageTypeOfCar?.image = decodedImage 
} 
+0

Это, скорее всего, означает, что строка Base64 не является действительным. Вы тестировали его в каком-то онлайн-конвертере Base64? Кроме того, NSData строго соответствует требуемому заполнению (длина должна быть кратна 4), сравните http://stackoverflow.com/questions/29152706/decoding-json-web-tokens-in-swift. –

+0

Привет, Мартин, да, я попробовал, и я получил картинку из онлайн-конвертера ... –

+0

Вы подтвердили, что длина * строки Base64 кратна 4? –

ответ

1

Ваш base64String является

data:image/png;base64,iVBORw0KGgoA......YII= 

Начальная "data:image/png;base64," является не часть кодирования Base64 и должны быть удалены до того, как строка может быть расшифрован:

if let range = base64String.rangeOfString("data:image/png;base64,", options: .AnchoredSearch) { 
    base64String.removeRange(range) 
} 

Затем

let decodedData = NSData(base64EncodedString: base64String, options: nil) 
if let decodedImage = UIImage(data: decodedData!) { 
    imageTypeOfCar?.image = decodedImage 
} 

успешно и отображает

enter image description here

+0

Большое спасибо. Теперь он работает !!! –

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