2016-09-08 4 views
3

私は "プレイヤー"フレームワークを使用するアプリで働いていますhttps://github.com/piemonte私はswift 3に更新したので、1つの特定の機能に関するエラーが発生します。私はまだ迅速に3でプロではないので、それを修正する方法は本当にわからない。どんな助け? :D私はswift 3のための "プレーヤー"フレームワークを更新

コード(SWIFT 2.3)(私はSWIFT 3にアップデート助けてください)

private var PlayerObserverContext = 0 
private var PlayerItemObserverContext = 0 
private var PlayerLayerObserverContext = 0 

    override open func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { 

    switch (keyPath, context) { 
    case (.some(PlayerRateKey), PlayerObserverContext): 
     true 
    case (.some(PlayerStatusKey), PlayerItemObserverContext): 
     true 
    case (.some(PlayerKeepUp), PlayerItemObserverContext): 
     if let item = self.playerItem { 
      self.bufferingState = .ready 
      self.delegate?.playerBufferingStateDidChange(self) 

      if item.isPlaybackLikelyToKeepUp && self.playbackState == .playing { 
       self.playFromCurrentTime() 
      } 
     } 

     let status = (change?[NSKeyValueChangeKey.newKey] as! NSNumber).intValue as AVPlayerStatus.RawValue 

     switch (status) { 
     case AVPlayerStatus.readyToPlay.rawValue: 
      self.playerView.playerLayer.player = self.player 
      self.playerView.playerLayer.isHidden = false 
     case AVPlayerStatus.failed.rawValue: 
      self.playbackState = PlaybackState.failed 
      self.delegate?.playerPlaybackStateDidChange(self) 
     default: 
      true 
     } 
    case (.some(PlayerEmptyBufferKey), PlayerItemObserverContext): 
     if let item = self.playerItem { 
      if item.isPlaybackBufferEmpty { 
       self.bufferingState = .delayed 
       self.delegate?.playerBufferingStateDidChange(self) 
      } 
     } 

     let status = (change?[NSKeyValueChangeKey.newKey] as! NSNumber).intValue as AVPlayerStatus.RawValue 

     switch (status) { 
     case AVPlayerStatus.readyToPlay.rawValue: 
      self.playerView.playerLayer.player = self.player 
      self.playerView.playerLayer.isHidden = false 
     case AVPlayerStatus.failed.rawValue: 
      self.playbackState = PlaybackState.failed 
      self.delegate?.playerPlaybackStateDidChange(self) 
     default: 
      true 
     } 
    case (.some(PlayerReadyForDisplay), PlayerLayerObserverContext): 
     if self.playerView.playerLayer.isReadyForDisplay { 
      self.delegate?.playerReady(self) 
     } 
    default: 
     super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) 

    } 

} 

errors

答えて

1

私はそうのようguard声明と一致してcontextのラップを解除します:

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

    switch (keyPath, context) { 
    case (.some(PlayerRateKey), &PlayerObserverContext): 
     break 
    case (.some(PlayerStatusKey), &PlayerItemObserverContext): 
     break 
    case (.some(PlayerKeepUpKey), &PlayerItemObserverContext): 
     break 
    // etc 
    } 
} 

これはコンパイルして実行する必要があります。

またtruebreakに変更します。私はtrueが何のためにあったのか分かりません。

関連する問題