2016-05-30 4 views
-1

я судимоеNSData base64Encode возвращение ноль быстрого

let contents = results["contents"] as! String! 
let decodedData = NSData(base64EncodedString: contents, 
options:NSDataBase64DecodingOptions()) 
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) 





let contents = results["contents"] as! String! 
let decodedData = NSData(base64EncodedString: contents, options:NSDataBase64DecodingOptions.IgnoreUnknownCharacters) 
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) 



let contents = results["contents"] as! String! 
let decodedData = NSData(base64EncodedString: contents, options:NSDataBase64DecodingOptions(rawValue: 0)!) 
let decodedString = NSString(data: decodedData!, encoding: NSUTF8StringEncoding) 

всегда EXC_BAC_INSTRUCTION из decodedString возможно decodedData вернуть ноль

почему NSData возвращает ноль

ответ

0

Использование .Encoding64CharacterLineLength в качестве опции, а также применять .base64EncodedStringWithOptions к данным:

if let contents = results["contents"] as? String, 
     decodedData = NSData(base64EncodedString: contents, options:NSDataBase64DecodingOptions(rawValue: 0)) { 
    let decodedString = decodedData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength) 
} 
-1

Вы используете так много операторов разворота (!); не делай этого!

Что делать, если results не имеет сопоставления для ключа "contents"?

Что делать, если results имеет отображение для ключа "contents", но это не String?

Что делать, если results имеет отображение для ключа "contents", и это String, но это недопустимо. Базовые 64 кодированные данные? В этом случае инициализация NSData завершится неудачно и вернет нуль.

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