В соответствии с разделом Контроль доступа Язык программирования Swift :
Открытый доступ применяется только к классам и членам класса и отличается отобщедоступный доступ следующим образом:
Классы с общедоступным доступом или любым более ограниченным уровнем доступа могут быть разделены на подклассы только в пределах модуля, в котором они определены.
Члены класса с открытым доступом или любым более ограниченным уровнем доступа могут быть переопределены подклассами только в пределах модуля, в котором они определены.
Открытые классы могут быть разделены на подклассы внутри модуля, в котором они определены, и внутри любого модуля, который импортирует модуль, в который они определены.
Открытые члены класса могут быть переопределены подклассами внутримодуль, в котором они определены, и в любом модуле, который импортирует модуль, в который они определены.
open
в Swift 3 и более поздних версиях эквивалентен public
в Swift 2. Для получения дополнительной информации см. Предложение Swift Evolution SE-0117 .
Чтобы исправить это, измените исходное определение formatKey
с public
на open
и переопределить, используя override var formatKey: String { ...
.