【问题标题】:Pause mp3 file in swift 2.0在 swift 2.0 中暂停 mp3 文件
【发布时间】:2016-03-29 11:06:30
【问题描述】:

我有一个问题: 我想创建一个暂停按钮,当我选择一首新歌时 => 当前歌曲将停止并播放新歌。 我是 swift 的新手,所以我希望你能帮助我提供完整的代码。 非常感谢

这是我的代码:

import UIKit
import AVFoundation
class ChiTietViewController: UIViewController {
var thamsoTruyen:NSUserDefaults!


override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = UIColor(patternImage: UIImage(named: "nen.jpg")!)
    thamsoTruyen = NSUserDefaults()
    var myplayer:AVPlayer!
    var playeritem: AVPlayerItem!
    var row:Int = thamsoTruyen.objectForKey("number") as! Int
    var url:NSURL = NSURL(string:"http://ozz4u.com/danhsach.php?cot=mp3")!
    var ds:NSString!
    do{
        ds = try NSString(contentsOfURL: url, encoding: NSUTF8StringEncoding)
    } catch{
    }
    var chuoi:[String] = ds.componentsSeparatedByString("#") as [String]

    var error:NSError? = nil
    var u:NSURL = NSURL(string: chuoi[row])!
    playeritem = AVPlayerItem(URL: u)
    myplayer = AVPlayer(playerItem: playeritem)
    let playerlayer = AVPlayerLayer(player: myplayer)
    playerlayer.frame = CGRectMake(0, 0, 10, 15)
    self.view.layer.addSublayer(playerlayer)
    myplayer.play()

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

}

【问题讨论】:

  • 我的建议是,在添加新功能之前,您应该修复现有代码。这里有很多错误和问题。 1- 局部变量不应该是隐式展开的选项。 2-播放器应该在实例变量中,而不是在本地变量中。 3- catch 分支是空的,这是一个大错误,总是显示捕获的错误。 4-删除不必要的var error。 5- 不要强制打开选项。
  • 感谢您的回复。我对此很陌生,所以我知道我有很多错误。如果可以请帮我编辑此代码
  • 我在评论中列出了主要问题。看看这里的例子:stackoverflow.com/a/32994222/2227743。另请阅读有关 Optionals 的 Swift 文档,这非常很重要。
  • 谢谢!让我试试
  • 我会为你发布一个答案。但是我强烈建议按照 Eric 所说的去做并阅读基本的 swift 文档。你的代码有很多错误

标签: ios swift mp3 avaudioplayer avplayer


【解决方案1】:

您的代码中有很多基础错误,因此我建议您阅读更多教程,尤其是 swift 基础文档。

我已经为你强调了它们,老实说,在你对 swift 基础知识更加熟悉之前,我认为继续你正在做的事情并不是一个好主意。

import UIKit
import AVFoundation
class ChiTietViewController: UIViewController {

  //var thamsoTruyen:NSUserDefaults!  //BAD CODE, ALSO BAD NAMING
  let localDefaults = NSUserDefaults.standardUserDefaults()


       override func viewDidLoad() {
       super.viewDidLoad()

       self.view.backgroundColor = UIColor(patternImage: UIImage(named: "nen.jpg")!)
//thamsoTruyen = NSUserDefaults() // BAD CODE, Delete. Also not calling standardUserDefaults.
//var my player:AVPlayer! // BAD CODE, Make no sense so delete. This would make only sense if you put it above "ViewDidLoad" so you can use it across your whole class.
//var playeritem: AVPlayerItem! // See above

 var row:Int = thamsoTruyen.objectForKey("number") as! Int // BAD CODE, You are not checking if the object exists but are forcing it to be an Int, which can cause a nil crash. Also you might as well use IntegerForKey when your value is an INT. 

var row = localDefaults.integerForKey("number)" // Better option than above

var url:NSURL = NSURL(string:"http://ozz4u.com/danhsach.php?cot=mp3")!
var ds:NSString! // Make this optional?
do{
    ds = try NSString(contentsOfURL: url, encoding: NSUTF8StringEncoding)
} catch{

   // NOT CATCHING ERROR HERE, DANGEROUS 
}
var chuoi:[String] = ds.componentsSeparatedByString("#") as [String]

var error:NSError? = nil
var u:NSURL = NSURL(string: chuoi[row])! // Force unwrapping so you better make sure the array exists.

let playeritem = AVPlayerItem(URL: u)
let myplayer = AVPlayer(playerItem: playeritem)
let playerlayer = AVPlayerLayer(player: myplayer)
playerlayer.frame = CGRectMake(0, 0, 10, 15)
self.view.layer.addSublayer(playerlayer)
myplayer.play()

}

现在,如果您仍在寻找问题的答案,请查看我在 gitHub 上的助手,它非常简单,并向您展示如何暂停歌曲等。

https://github.com/crashoverride777/Swift2-Music-Helper

【讨论】:

  • 非常感谢!我会努力学习 :D 我还是个学生 :D
  • 是的,请不要走错路,我们都在学习。当您的代码有缺陷时,帮助您解决这个问题只是个坏主意。只要放慢一点,一步一步做事。你必须阅读基本的苹果文档,全部。 developer.apple.com/library/ios/documentation/Swift/Conceptual/…
  • 是的 :D 我只是想有一个好的演示来更容易学习..所以我自己做然后问然后编辑 => 它会让我更好地记住
  • 我明白了。但是你必须阅读我发给你的链接,它是基本的 swift 文档。它教你关于可选、可选链和所有其他基础知识,是必读的。
  • 太棒了。它们并没有那么长,而且它真正的基本内容是用尽可能简单的英语写成的。我知道有时做事比阅读更好,但在这种情况下,您至少应该阅读这些内容。还要确保当您在线观看教程时,它们尽可能现代,以便您获得适当的快速建议,而不是一些笨拙的 ObjC 转换。
猜你喜欢
  • 2011-08-06
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
相关资源
最近更新 更多