Swift: ошибка при значении типа «Данные» для типа «Данные» - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть некоторая функция для камеры, использующей AVKit и AVCapturePhotoCaptureDelegate.

import UIKit 
import AVKit

class CaptureImageClass: NSObject, AVCapturePhotoCaptureDelegate {

    var photoData: Data?

    func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {

        if let error = error {
            print("Error capturing photo: \(error)")
        } else {
            photoData = photo.fileDataRepresentation() //Cannot assign value of type 'Data?' to type 'Data?'
        }
    }

    func capture(_ output: AVCapturePhotoOutput, didFinishCaptureForResolvedSettings resolvedSettings: AVCaptureResolvedPhotoSettings, error: Error?) {
        guard let photoData = photoData else {
            print("No photo data resource")
            return
        }
        let capturedImage = UIImage.init(data: photoData , scale: 1.0) //Cannot convert value of type 'Data' to expected argument type 'Data'
        if let image = capturedImage {
            UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
        }
    }
}

этот код скомпилирован без проблем, когда я делаю отдельный проект.Но когда я пытаюсь подать заявку в другой проект, возникает какая-то ошибка, например Cannot assign value of type 'Data?' to type 'Data?' и Cannot convert value of type 'Data' to expected argument type 'Data'. Эта проблема вызвана другой версией Swift или нет?

Примечание. Эта цель развертывания "другого проекта" - iOS10 & swift 3 и используя func capture для didFinishCaptureForResolvedSettings и не могу использовать func photoOutput Мой автономный проект выполняется с использованием Swift 4, а целью развертывания является iOS 11.3

Ответы [ 3 ]

0 голосов
/ 16 ноября 2018

Кто-то переопределил тип Data.Вы можете обойти это, используя:

var photoData: Swift.Data?

0 голосов
/ 26 ноября 2018

Решено с помощью захвата функции (_ captureOutput: AVCapturePhotoOutput, didFinishProcessingPhotoSampleBuffer photoSampleBuffer: CMSampleBuffer ?, previewPhotoSampleBuffer: CMSampleBuffer ?, resolvedSettings: AVCap * error_set

0 голосов
/ 15 ноября 2018

Проверьте, не связана ли ошибка с версией iOS вашего устройства.

Имейте в виду, что

func photoOutput(_ output: AVCapturePhotoOutput, 
didFinishProcessingPhoto 
photo: AVCapturePhoto, 
error: Error?) {

Доступно для iOS11 и более поздних версий, для iOS10 и более ранних версий.

optional func photoOutput(_ output: AVCapturePhotoOutput,
 didFinishProcessingPhoto photoSampleBuffer: CMSampleBuffer?,
previewPhoto previewPhotoSampleBuffer: CMSampleBuffer?,
resolvedSettings: AVCaptureResolvedPhotoSettings, 
bracketSettings: AVCaptureBracketedStillImageSettings?, 
error: Error?)

Также

fileDataRepresentation()

Доступно для iOS11 и более поздних версий

Надеюсь, это поможет ...

...