Swift3 我能';Don’我好像没有定做照相机&引用;初始化前使用的常数";
我用的是swift 3。我在试着做一个定制相机。但无论我遵循多少教程,或苹果的许多文档,总有一个错误Swift3 我能';Don’我好像没有定做照相机&引用;初始化前使用的常数";,swift3,constants,avcapturesession,Swift3,Constants,Avcapturesession,我用的是swift 3。我在试着做一个定制相机。但无论我遵循多少教程,或苹果的许多文档,总有一个错误 class ViewController: UIViewController, UIImagePickerControllerDelegate { @IBOutlet var cameraView: UIView! var captureSession : AVCaptureSession? var stillImageOutput : AVCaptureStillImageOutput?
class ViewController: UIViewController, UIImagePickerControllerDelegate {
@IBOutlet var cameraView: UIView!
var captureSession : AVCaptureSession?
var stillImageOutput : AVCaptureStillImageOutput?
var previewLayer : AVCaptureVideoPreviewLayer?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
captureSession = AVCaptureSession()
captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080
let backCamera = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)
let error : NSError?
do {
let input = try! AVCaptureDeviceInput (device: backCamera)
if (error == nil && captureSession?.canAddInput(input) != nil) {
captureSession?.addInput(input)
stillImageOutput = AVCaptureStillImageOutput()
stillImageOutput?.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if (captureSession?.canAddOutput(stillImageOutput) != nil) {
captureSession?.addOutput(stillImageOutput)
previewLayer = AVCaptureVideoPreviewLayer (session: captureSession)
previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect
previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait
cameraView.layer.addSublayer(previewLayer!)
captureSession?.startRunning()
}
}
} catch {
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
previewLayer?.frame = cameraView.bounds
}
在这一行,
如果(error==nil&&captureSession?.canAddInput(input)!=nil){
,则出现一个错误,表示常量“error”已在初始化之前使用过。我不太明白这一点。请提前感谢。正如错误消息所述,您在初始化之前正在使用error
。您可以通过使用nil
初始化来修复此问题:
let error: NSError? = nil
或者更好:
let error: Error? = nil
实际上,您从未使用过error
,因此您可以简单地将其删除:
...
//let error : NSError? delete this line
do {
...
if (/* error == nil && delete this */captureSession?.canAddInput(input) != nil) {