2016-08-29 36 views
0

我正在开发一个iOS项目。它以base64字符串的形式将音频存储在Web服务器上。当我请求服务器获取所有音频的base64字符串并尝试将其转换为NSData时,我得到nil如何在swift中将base64转换为NSDATA

do 
{ 
    var audioData: NSData! = NSData(base64EncodedString: audioBase64String, options: NSDataBase64DecodingOptions(rawValue:0)) 
    if audioData != nil 
    { 
     let sound = try AVAudioPlayer(data: audioData) 
     sound.play() 
    } 
    else 
    { 
     print("Data Not Exist") 
    } 
} 
catch 
{ 
} 

在Android相同的base64串被转换成字节数组和正在播放时,但在IOS audioBase64StringNSData返回nil

+0

包含在你的问题中样本的base64。是否有可能添加'NSDataBase64DecodingIgnoreUnknownCharacters'已经解决了这个问题? (也许你b64以换行符结束?) – hnh

+0

你已经从服务器获得Base 64 String,并且你再次为编码做同样的事情,这就是为什么你没有得到结果。所以现在需要做解码。 –

+0

谢谢@hnh 已解决 –

回答

5

这工作:

audioData = NSData(base64EncodedString: recording_base64, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters) 
-2

尝试this library。您可以从base64字符串获取NSData,然后使用此数据初始化您的AVAudioPlayer。请阅读AVAudioPlayer Apple的文档。

1

对于斯威夫特3:

var audioData = Data(base64Encoded: recording_base64, options: .ignoreUnknownCharacters) 
相关问题