簡體   English   中英

為什么會出現nil錯誤?

[英]Why am I getting a nil error?

目前,我可以在iPhone上將當前正在播放的歌曲添加到我的應用程序中,但是我正在嘗試根據應用程序上的歌曲名稱從Parse播放一首歌曲,但出現了nil錯誤。 為什么?

 func playit(sender: UIButton!){
    if let nowPlaying = musicPlayer.nowPlayingItem{
    let title = nowPlaying[MPMediaItemPropertyTitle] as? String
    let artist = nowPlaying[MPMediaItemPropertyTitle] as? String

    println(title! + artist!)


        let query = PFQuery(className: "Songs")
        query.whereKey("SongName", equalTo: title!)
        query.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]?, error: NSError?) -> Void in
            if error == nil {
                // The find succeeded.
                println("Successfully retrieved \(objects!.count) song(s).")
                // Do something with the found objects
                if let objects = objects as? [PFObject] {
                    for object in objects {
                        println(object.objectId)

                        let objects: PFObject = object as PFObject
                        let parseAudio: PFFile = objects.valueForKey("Songs") as! PFFile
                        let audioPath: String = parseAudio.url!
                        let urlParse: NSURL = NSURL(string: audioPath)!

                        player = AVPlayer(URL: urlParse)
                        println(player)
                        player.play()
                    }
                }
            } else {
                // Log details of the failure
                println("Error: \(error!) \(error!.userInfo!)")
            }

        }

    }
}

不知道確切的錯誤是什么,我只能說您的問題很可能是在此塊中:

            let objects: PFObject = object as PFObject
                    let parseAudio: PFFile = objects.valueForKey("Songs") as! PFFile
                    let audioPath: String = parseAudio.url!
                    let urlParse: NSURL = NSURL(string: audioPath)!

parseAudio轉換為NSURL的字符串不會為媒體播放器獲取文件的內容。 嘗試這樣的事情:

let parseAudio: PFFile = objects.valueForKey("Songs") as? PFFile
parseAudio?.getDataInBackgroundWithBlock({ (data, error) -> Void in

      if error == nil {
             // do what you need to with the music file which is contained in `data`
              let fullParseAudioFile = data

      } else if error != nil {

      println(error!.localizedDescription)

      }

  })

我沒有與媒體播放器一起工作,所以我不知道將數據轉換為哪種格式,但是現在您將擁有可用的文件,而不僅僅是代表文件名的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM