如何在Swift中将Base64转换为NSData

6

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

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上,audioBase64String返回NSDatanil

在你的问题中包含一个base64示例。添加NSDataBase64DecodingIgnoreUnknownCharacters是否已经解决了问题?(也许你的b64以换行符结尾?) - hnh
你已经从服务器获取了Base 64字符串,然后你又做了同样的编码操作,这就是为什么你没有得到结果。所以现在需要进行解码。 - Anand Nimje
感谢 @hnh,问题已解决。 - Muhammad Zeshan Arif
3个回答

16

这个有效:

Swift 3和4:

var audioData = Data(base64Encoded: recording_base64, options: .ignoreUnknownCharacters)

Swift 2:

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

3

针对Swift 3:

var audioData = Data(base64Encoded: recording_base64, options: .ignoreUnknownCharacters)

-2

尝试使用这个库。您可以从base64字符串获取NSData,然后使用此数据初始化AVAudioPlayer。请阅读AVAudioPlayer苹果文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接