Смотри, у тебя есть пикервью, он должен отображать данные какие-то, верно? У пикервью, таблицы, коллекции, ... есть свойство delegate ( + dataSource). Это свойство указывает на объект, который реализует соответствующий протокол, то есть он берет на себя обязанность за предоставление данных и обработку каких-либо нажатий и прочего, так как сама вью не может этим заниматься и не ее рук это дело. Поэтому, нужно указывать pickerView.delegate = ..., pickerView.dataSource = ..., чтобы назначить этого объекта и пикервью понял, что ага, вот ему надо передать обязанность, он ее взял на свои плечи. Если у тебя выступает в качестве объекта, реализующего данные протоколы, вьюконтроллер, то указывай внутри класса либо в расширении self, то есть данный вьюконтроллер