2017-02-18 2 views
0

Я учусь, и до сих пор я не мог понять это.Значение типа AnyObject не имеет члена Генератор

Мой код:

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

Тип 'AnyObject' не имеет значения, что ?? Обычно есть кое-что, чтобы положить конец этому утверждению, чтобы уточнить, что вы пытаетесь манипулировать тем, что не существует. – Pierce

+0

Возможно, вы хотите сделать «connections.inputPorts»? ... не знаю, недостаточно информации. –

+0

Значение типа AnyObject не имеет значения в 'Generator' –

ответ

0

У вас на самом деле такая же проблема в двух местах. Первый - это свойство connections, которое, как представляется, является свойством класса AVCaptureOutput. connections объявлен как NSArray.

Вторая, аналогичная проблема с вашим использованием inputPorts. inputPorts представляется собственностью класса AVCaptureConnection. inputPorts объявлен как NSArray.

Проблема, с которой вы сталкиваетесь, заключается в том, что conn и port в конечном итоге имеют тип AnyObject, поскольку Swift не имеет представления о том, какие объекты находятся в двух массивах.

Итак, ваша попытка доступа к собственности по переменной типа AnyObject приводит к ошибке.

У вас есть два варианта.

  1. В ролях connections массив в Swift массив AVCaptureSession и inputPorts к Swift массив AVCaptureInputPort.
  2. Отрасль conn до AVCaptureSession и port до AVCaptureInputPort.
+0

спасибо! это сработало! –

+0

Рад помочь. Пожалуйста, не забудьте принять ответы, которые решают ваши вопросы. Это позволяет людям понять, что ваш вопрос был решен. – rmaddy

Смежные вопросы