Swift 3 переопределяет не открытый вар вне его определяющего модуля - PullRequest
0 голосов
/ 21 мая 2018

Я преобразовал свой код swift 2 в swift 3. Затем я получаю эту ошибку.Кто-нибудь может мне помочь в этом?

open override var formatKey: String { //overriding non-open var outside of its defining module
    get {
        if customFormatKey != nil {
            return customFormatKey!
        }
        return String(describing: type(of: self)).components(separatedBy: ".").last!
    }
}

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Я столкнулся с той же проблемой, затем вы можете попытаться выполнить поиск по всему проекту, включая pods/ folder, чтобы убедиться, что formatKey не public var где-то в вашем проекте.

0 голосов
/ 22 мая 2018

В соответствии с разделом Контроль доступа Язык программирования Swift :

Открытый доступ применяется только к классам и членам класса и отличается отобщедоступный доступ следующим образом:

  • Классы с общедоступным доступом или любым более ограниченным уровнем доступа могут быть разделены на подклассы только в пределах модуля, в котором они определены.

  • Члены класса с открытым доступом или любым более ограниченным уровнем доступа могут быть переопределены подклассами только в пределах модуля, в котором они определены.

  • Открытые классы могут быть разделены на подклассы внутри модуля, в котором они определены, и внутри любого модуля, который импортирует модуль, в который они определены.

  • Открытые члены класса могут быть переопределены подклассами внутримодуль, в котором они определены, и в любом модуле, который импортирует модуль, в который они определены.

open в Swift 3 и более поздних версиях эквивалентен public в Swift 2. Для получения дополнительной информации см. Предложение Swift Evolution SE-0117 .

Чтобы исправить это, измените исходное определение formatKey с public на openи переопределить, используя override var formatKey: String { ....

...