我有一个应用程序(与我上一篇关于解开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/