不能将不可变值作为InOut参数传递:‘CGLayerGetContext’是一个函数

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (8)

我有来自苹果的轰鸣声代码。我收到此错误:

无法将不可变值作为inout参数传递:'CGLayerGetContext'是一个函数

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    // Only handle observations for the playerItemContext
    guard context == &CGLayerGetContext else { //error here
        super.observeValue(forKeyPath: keyPath, of: object,change: change, context: context)
        return
    }

    if keyPath == #keyPath(AVPlayerItem.status) {
        let status: AVPlayerItem.Status

        // Get the status change from the change dictionary
        if let statusNumber = change?[.newKey] as? NSNumber {
            status = AVPlayerItem.Status(rawValue: statusNumber.intValue)!
        } else {
            status = .unknown
        }

        // Switch over the status
        switch status {
        case .readyToPlay: break
        // Player item is ready to play.
        case .failed: break
        // Player item failed. See error.
        case .unknown: break
            // Player item is not yet ready.
        }
    }
}

我怎样才能解决这个问题?

提问于
用户回答回答于

请仔细阅读apple中代码,您必须创建上下文

private var playerItemContext = 0

并使用属性,而不是类型

guard context == &playerItemContext else { 

并且CGLayerGetContext与代码无关

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • Dingda

    Dingda · 站长 (已认证)

    4 粉丝0 提问3 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答

扫码关注云+社区

领取腾讯云代金券