2016-09-30 10 views
1

オンラインオーディオストリームにはAVPlayerがあります。オフラインキューで複数の曲を再生するには& AVQueuePlayerです。AVPlayerとAVQueuePlayerの違いを検出するKVO

MyCode

self.myQueuePlayer?.addObserver(self, forKeyPath: "timedMetadata", options: NSKeyValueObservingOptions.new, context: nil) 

myPlayer.currentItem?.addObserver(self, forKeyPath: "timedMetadata", options: [.new,.old,.initial], context: nil) 

"timedMetadata" &取得のための私の観察者であるKVOすることができますどのようにAVPlayerまたはAVQueuePlayer

答えて

0

さまざまKVOオブジェクトを区別するために、コンテキスト引数を使用することができます。

// class 
private var playerContext = 0 
private var queuePlayerContext = 0 

func setup() { 
    self.myQueuePlayer?.addObserver(self, forKeyPath: "timedMetadata", options: .new, context: &queuePlayerContext) 
    myPlayer.currentItem?.addObserver(self, forKeyPath: "timedMetadata", options: .new, context: &playerContext) 
} 

override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 
    guard let context = context else { 
     return 
    } 

    if keyPath == "timedMetadata" { 
     switch context { 
     case &queuePlayerContext: 
      print("queuePlayer") 
     case &playerContext: 
      print("playerContext") 
     default: 
      break 
     } 
    } 
} 
関連する問題