Я использую проект Github MMSCameraViewController в проекте, и после недавнего обновления Xcode 8.3 компилятор выдает ошибку:

/MMSCameraViewController/Classes/MMSCameraViewController.swift:448:42: введите '[Any] !!' не соответствует протоколу «Последовательность»

for port in (connection as AnyObject).inputPorts { // <----- this line throws error
   if (port as! AVCaptureInputPort).mediaType == AVMediaTypeVideo {
       videoConnection = connection as! AVCaptureConnection
       break connectionloop
   }
}

Я искал другие посты о постах типа любая последовательность, появляющихся здесь недавно, но ничего из этого не помогло мне (и я новичок в Swift). Есть идеи, как это решить?

Большое спасибо!

Мартин

1
Martin Schultz 4 Апр 2017 в 10:08

2 ответа

Лучший ответ

Поскольку AnyObject не то, что вы хотите, ошибка действительно очевидна.

for port in (connection as! AVCaptureConnection).inputPorts {
     if (port as! AVCaptureInputPort).mediaType == AVMediaTypeVideo {
            videoConnection = connection as! AVCaptureConnection
            break connectionloop
     }
}

Библиотека должна проходить через каждый порт, поэтому AnyObject не имеет

1
Lu_ 4 Апр 2017 в 07:18

Я предполагаю, что ваше соединение является классом AVCaptureConnection, поэтому вы не должны приводить его к AnyObject:

// Change first line to this
for port in connection.inputPorts { 
   // Also to make it more secure (and avoid force casting)
   if let port = port as? AVCaptureInputPort, 
        port.mediaType == AVMediaTypeVideo {

       // You can delete force casting also here
       videoConnection = connection
       break connectionloop
   }
}
1
Dawid Koncewicz 4 Апр 2017 в 07:19