AnyObject类型的值没有成员Generator

时间:2017-02-18 23:14:49

标签: swift

我正在学习,到目前为止我无法弄明白。

我的代码是:

 func takeScreenshot(completionHandler handler: ((NSData!) -> Void)!)
    {
        // find out video connection
        var videoConnection: AVCaptureConnection?
        for conn in stillImageOutput!.connections {
            for port in conn.inputPorts {
                if port.mediaType == AVMediaTypeVideo {
                    videoConnection = conn as? AVCaptureConnection
                    break
                }
            }
            if videoConnection != nil {
                break
            }
        }
        stillImageOutput!.captureStillImageAsynchronouslyFromConnection(videoConnection) { (sampleBuffer: CMSampleBuffer!, err: NSError!) in
            let data = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
            handler(data)
        }
    }

循环"对于conn.inputPorts中的端口"我收到了错误。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你实际上在两个地方都有同样的问题。首先是connections属性,它似乎是AVCaptureOutput类的属性。 connections被声明为NSArray

第二个类似问题是您使用inputPortsinputPorts似乎是AVCaptureConnection类的属性。 inputPorts被声明为NSArray

您遇到的问题是connport最终会出现AnyObject类型,因为Swift不知道这两个数组中的对象类型。

因此,您尝试访问类型为AnyObject的变量的属性会导致错误。

您有两种选择。

  1. connections数组转换为AVCaptureSessioninputPorts的Swift数组,转换为AVCaptureInputPort的Swift数组。
  2. conn投放到AVCaptureSessionport投放到AVCaptureInputPort