Значение типа 'AVCapturePhotoOutput' не имеет члена captureStillImageAsynchronously - PullRequest
0 голосов
/ 04 мая 2018

Пожалуйста, помогите мне изменить этот код, он не работает, я искал в интернете, но не нашел решения. Я не смог бы сам сделать рефакторинг.

Эта строка:

imageOutput.captureStillImageAsynchronously(from: connection) { (sampleBuffer, error) -> Void in

выдает эту ошибку:

У значения типа 'AVCapturePhotoOutput' нет члена 'captureStillImageAsynchronously'

  imageOutput.captureStillImageAsynchronously(from: connection) { (sampleBuffer, error) -> Void in
    if (sampleBuffer == nil || error != nil) {
      DispatchQueue.main.async {
        completion(nil, error)
      }
      return
    }

    guard let data = AVCapturePhotoOutput.jpegPhotoDataRepresentation(forJPEGSampleBuffer: sampleBuffer!, previewPhotoSampleBuffer: nil)  else {
      DispatchQueue.main.async {
        completion(nil, StillImageError.noData)
      }
      return
    }

    guard let image = UIImage(data: data) else {
      DispatchQueue.main.async {
        completion(nil, StillImageError.noImage)
      }
      return
    }

    var saver = ImageSaver()

        .onSuccess { image, assetId in

            completion(assetId, nil)

        }
        .onFailure { error in

    }
    saver = saver.save(image, filter:  nil)

  }

1 Ответ

0 голосов
/ 04 мая 2018

captureStillImageAsynchronously(from:completionHandler:) является функцией AVCaptureStillImageOutput , а не AVCapturePhotoOutput .

Поскольку AVCaptureStillImageOutput устарела с iOS 10, вместо этого следует использовать AVCapturePhotoOutput, как в коде. Он имеет функцию с тем же вариантом использования: capturePhoto(with:delegate:).

Для получения дополнительной информации об использовании AVCapturePhotoOutput, проверьте этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...