Значение типа 'AnyClass' (он же 'AnyObject.Type') не имеет члена '…' - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть расширение NSManagedObject, которое требует динамического вычисления атрибута. Используется для получения jsonKey из описания NSEntity.

Приведенный ниже код работал нормально, но обновление до последних версий Swift выдает ошибку:

"Значение типа 'AnyClass' (он же 'AnyObject.Type') не имеет члена 'jsonKey'".

extension NSManagedSyncedObject {   
    class var jsonKey: String {
        return // Some code fetching the proper value
    }

    var jsonKey: String {
        return NSClassFromString("\(type(of: self))")!.jsonKey
    }
}

Я полагаю, что NSClassFromString не так разрешительно, как раньше, но я не уверен, как обновить код, чтобы исправить эту ошибку.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Используйте String(describing:type(of:self)), если хотите, чтобы имя класса было String. Но настоящий ответ дал Давид Пастор.

0 голосов
/ 07 ноября 2018

Нет необходимости во всей части NSClassFromString, если вы просто хотите получить доступ к переменной класса из метода экземпляра. Вы можете просто использовать type(of: self), чтобы сделать это.

extension NSManagedSyncedObject {   
    class var jsonKey: String {
        return // Some code fetching the proper value
    }

    var jsonKey: String {
        return type(of: self).jsonKey
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...