2016-03-29 11 views
1

私は問題があります: 一時停止ボタンを作成したいと思います。新しい曲を選択すると、現在の曲は停止して新しい曲を再生します。 私は非常に新しいので、フルコードで私を助けてくれることを願っています。 が、これは私のコードで多くすぐにmp3ファイルを一時停止する

ありがとう:私はあなたには、いくつかのより多くのチュートリアル、特に迅速な基本的なドキュメントを読むことを示唆しているよう

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() 

} 
+0

私の提案は、ということです新しい機能を追加する前に、既存のコードを修正する必要があります。ここには多くのエラーと問題があります。 1-ローカル変数は、暗黙のうちにアンラップされたオプションであってはなりません。 2 - プレイヤーはローカル変数ではなく、インスタンス変数でなければなりません。 3 - 'catch 'ブランチが空です。これは大きな間違いです。常にキャッチされたエラーを表示します。不要な 'var error'を削除します。 5-アンラップオプションを強制しません。 – Moritz

+0

お返事ありがとうございます。私はこれで非常に新しいので、私は多くの間違いがあることを知っています。 このコードを編集するのを手伝ってもらえればよろしいですか? – ozzbmt

+0

私のコメントには主な問題点が記載されています。ここで例をご覧ください:http://stackoverflow.com/a/32994222/2227743オプションのSwiftのドキュメントも読んでください。これは*非常に重要です。 – Moritz

答えて

0

のファンダメンタルズを使用してコード内の多くのエラーがあります。

私はそれらをあなたのために強調しています。素早く基本がより快適になるまで、あなたがやっていることを続けるのは良い考えです。

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

+0

ありがとう!私は難しいことを学びます:私はまだ学生です:D – ozzbmt

+1

ええ、これは間違った方法を取るしないでください、私たちはすべて学習しています。あなたのコードに欠陥があるときにこの質問を手伝うのはちょっと悪い考えです。ちょっとしたことを少し遅くし、一歩一歩進んでください。あなたは基本的なリンゴのドキュメントを読む必要があります。 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309 – crashoverride777

+0

ええ:私はちょうど良いことをしたいデモを簡単に学習することができます。 私は自分自身でそれを行い、編集して尋ねてください>覚えておくと良いでしょう。 – ozzbmt

関連する問題