【发布时间】:2015-11-10 01:26:39
【问题描述】:
我正在尝试使用 Xcode 7 中的 Swift 2.0 从解析流式传输音乐(我在 Parse 中上传了 3 个音频文件)。我一直在关注大约 6 个月前发布的教程,但显然发生了很多变化。我已经能够遵守除一项之外的所有更改。当我运行应用程序并点击一行(这是一首歌曲)时,我收到错误:
无法将“PFFile”(0x10dda2d50)类型的值转换为“NSURL”(0x10e6d1c10)。
这是我的代码:
import UIKit
import Parse
import AVFoundation
import AVKit
public var AudioPlayer = AVPlayer()
public var SelectedSongNumber = Int()
class TableViewController: UITableViewController, AVAudioPlayerDelegate {
var iDArray = [String]()
var NameArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
var ObjectIDQuery = PFQuery(className: "Songs")
ObjectIDQuery.findObjectsInBackgroundWithBlock {
(objectsArray: [PFObject]?, error: NSError?) -> Void in
//objectsArray!.count != 0
var objectIDs = objectsArray!
NSLog("\(objectIDs)")
for i in 0...objectIDs.count-1 {
self.iDArray.append(objectIDs[i].valueForKey("objectId") as! String)
self.NameArray.append(objectIDs[i].valueForKey("SongName") as! String)
self.tableView.reloadData()
}
}
}
func grabSong () {
var songQuery = PFQuery(className: "Songs")
songQuery.getObjectInBackgroundWithId(iDArray[SelectedSongNumber], block: {
(object: PFObject?, error : NSError?) -> Void in
if let AudioFileURLTemporary = object?.objectForKey("SongFile") {
AudioPlayer = AVPlayer(URL: AudioFileURLTemporary as! NSURL)
AudioPlayer.play()
}
})
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return iDArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Cell")
cell?.textLabel!.text = NameArray[indexPath.row]
return cell!
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
SelectedSongNumber = indexPath.row
grabSong()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
给我带来麻烦的线路是AudioPlayer = AVPlayer(URL: AudioFileURLTemporary as! NSURL)。最初教程将此行写为AudioPlayer = AVPlayer(URL: NSURL(string: AudioFileURLTemporary!)),但这也不起作用。
我该如何解决这个问题?
【问题讨论】:
-
请注意,Xcode 标签仅用于与 Xcode IDE 相关的问题。
标签: ios swift parse-platform swift2