我正在学习,到目前为止我无法弄明白。
我的代码是:
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中的端口"我收到了错误。
感谢您的帮助!
答案 0 :(得分:0)
你实际上在两个地方都有同样的问题。首先是connections
属性,它似乎是AVCaptureOutput
类的属性。 connections
被声明为NSArray
。
第二个类似问题是您使用inputPorts
。 inputPorts
似乎是AVCaptureConnection
类的属性。 inputPorts
被声明为NSArray
。
您遇到的问题是conn
和port
最终会出现AnyObject
类型,因为Swift不知道这两个数组中的对象类型。
因此,您尝试访问类型为AnyObject
的变量的属性会导致错误。
您有两种选择。
connections
数组转换为AVCaptureSession
和inputPorts
的Swift数组,转换为AVCaptureInputPort
的Swift数组。conn
投放到AVCaptureSession
和port
投放到AVCaptureInputPort
。