json - 为什么我在Swift文件中解开nil?

标签 json swift audio avfoundation itunes

我有一个应用程序(与我上一篇关于解开nil的文章相同)。我现在很讨厌nil。该应用程序可以搜索iTunes商店并以JSON返回数据。我可以使用它,它可以获取歌曲名称,歌手姓名以及所有内容!我创建了一个@IBAction按钮来播放歌曲的预览。 JSON具有一个属性,它是歌曲预览的URL。当我单击按钮时,它将执行以下操作:

        let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(url, ofType: "m4a")!)
        AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
        AVAudioSession.sharedInstance().setActive(true, error: nil)
        var error:NSError?
        audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
url是这样的:http://a1993.phobos.apple.com/us/r1000/101/Music/b7/b3/e0/mzm.ooahqslp.aac.p.m4a。我知道我的播放音频文件的设置有效;我要构建的另一个应用程序使用完全相同的设置。为什么它告诉我我在此处解开nil:http://a1993.phobos.apple.com/us/r1000/101/Music/b7/b3/e0/mzm.ooahqslp.aac.p.m4a?网址有效且文件已播放。

最佳答案

检查这行代码。

let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(url, ofType: "m4a")!)
fileUrlWithPath正在询问本地路径,该路径在您的设备上。
NSBundle.mainBundle().pathForResource(url.....
此方法返回您发送给它的资源的本地路径。您正在向它发送一个Web URL,除非您明确地将其放置在mainBundle中,否则它不在其中。因此它返回的路径为nil,因为没有本地路径满足您传递给它的参数。

关于json - 为什么我在Swift文件中解开nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28820739/

相关文章:

ios - 如何根据 swift 单击按钮的条件执行不同的 segue?

python - pygame定位声音?

javascript - JSON.retrocycle 只转换部分引用

c# - 将扁平化的分层数据转换为树结构的 JSON

arrays - 将 var 存储在数组中

ios - 在 UITextView 中创建一个可点击的文本部分

javascript - 将 highchart 中的 x y 点绘制为 [[x 点列表],[y 点列表]]

json - REST资源根据状态返回不同的对象

iphone - 如何在OpenAL中计量/平均峰值功率水平?

java - 在Java中将mp3转换为wav