Неоднозначная ссылка на элемент 'first (where :)' error при ссылке на дочерний контроллер представления - PullRequest
0 голосов
/ 05 июня 2018

Я пишу приложение для iOS, и у меня есть контроллер дочернего представления, на который я пытаюсь сослаться.Дочерний контроллер представления является делегатом родителя.

В верхней части родительского контроллера представления у меня есть: fileprivate var cameraViewController: CameraViewController<AnyObject>?

В viewDidLoad(), у меня есть

guard let cameraController = childViewControllers.first as? CameraViewController else  {
            fatalError("Check storyboard for missing CameraViewController")
        }

        cameraViewController = cameraController

Однако я получаюошибка: Ambiguous reference to member 'first(where:)'

Может кто-нибудь объяснить мне, почему это происходит?У меня только один дочерний контроллер представления для родителя.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

CameraViewController должен быть везде одинаковым.Когда я создал экземпляр cameraViewController как CameraViewController, это должно было быть отражено во второй части кода.Вторая часть должна выглядеть так:

guard let cameraController = childViewControllers.first as? CameraViewController<AnyObject> else  {
            fatalError("Check storyboard for missing CameraViewController")
        }

        cameraViewController = cameraController
0 голосов
/ 05 июня 2018

Невозможно воспроизвести.Это полный код в файле контроллера моего приложения:

import UIKit
class CameraViewController : UIViewController {}
class ViewController: UIViewController {
    fileprivate var cameraViewController: CameraViewController?
    override func viewDidLoad() {
        super.viewDidLoad()
        guard let cameraController = childViewControllers.first as? CameraViewController else  {
            fatalError("Check storyboard for missing CameraViewController")
        }
        cameraViewController = cameraController
    }
}

Отлично компилируется.

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