2016-03-29 21 views
1

Ich habe ein Problem: Ich möchte eine Pause-Taste erstellen und wenn ich einen neuen Song wählen => aktuellen Song wird aufhören und neuen Song spielen. Ich bin sehr neu in Swift, also hoffe ich, dass Sie mir mit vollem Code helfen können. danken Ihnen vielPause mp3-Datei in Swift 2.0

dies ist mein Code:

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

Mein Vorschlag ist, dass Bevor Sie eine neue Funktion hinzufügen, sollten Sie den vorhandenen Code reparieren. Hier gibt es viele Fehler und Probleme. 1- lokale Variablen sollten nicht implizit unverpackte Optionale sein. 2- Der Spieler sollte in einer Instanzvariablen sein, nicht in einer lokalen. 3- Der 'catch'-Zweig ist leer, dies ist ein großer Fehler, zeigen Sie immer den gefangenen Fehler an. 4- Entfernen Sie den unnötigen 'var error'. 5-zwingen nicht unwrap optionals. – Moritz

+0

danke für die Antwort. Ich bin sehr neu darin, also weiß ich, dass ich viele Fehler habe. Wenn Sie mir bitte helfen können, diesen Code zu bearbeiten bitte – ozzbmt

+0

Ich habe die wichtigsten Punkte in meinem Kommentar aufgeführt. Sehen Sie sich hier ein Beispiel an: http://stackoverflow.com/a/32994222/2227743. Lies auch die Swift-Dokumentation über Optionals, das ist * sehr * wichtig. – Moritz

Antwort

0

Es gibt viele Fehler im Code mit den Grundlagen ist so würde ich vorschlagen, dass Sie einige weitere Tutorials lesen, vor allem die rasche Basisdokumentation.

Ich habe sie für Sie hervorgehoben und um ehrlich zu sein denke ich nicht, dass es eine gute Idee ist, fortzufahren, was Sie tun, bis Sie ein bisschen mehr mit den schnellen Grundlagen vertraut sind.

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

} 

Nun, wenn Sie noch nach einer Antwort auf Ihre Frage überprüfen mein Helfer auf GitHub suchen, ist es sehr einfach und zeigt Ihnen, wie Sie Songs Pause usw.

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

+0

Vielen Dank! Ich werde hart lernen: D ich bin immer noch Schülerin: D – ozzbmt

+1

Ja, bitte nimm das nicht falsch, wir lernen alle. Es ist nur eine schlechte Idee, Ihnen bei dieser Frage zu helfen, wenn Ihr Code fehlerhaft ist. Verlangsamen Sie ein kleines bisschen und machen Sie die Dinge Schritt für Schritt. Sie müssen die grundlegende Apple-Dokumentation lesen, alles davon. https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309 – crashoverride777

+0

Ja: D ich will nur ein gutes haben Demo zum leichteren Lernen .. so mache ich es für mich selbst und frage dann edit => es wird mich besser daran erinnern – ozzbmt