Swift, как создать экземпляр класса из строки, происходящей из lib - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь создать быстрый класс из строковой ссылки на его имя класса

Я могу получить тип, но я не уверен, как перейти из AnyClass в инициализированный экземпляр

let className: String = "myLibDomain.className"
if let referencedClass = NSClassFromString(className){
    if let conformantReferanceClass = referencedClass as? myProtocol {
        //do some work defined by myProtocol
    }
}

NSClassFromSting возвращает мне что-то типа AnyClass, и в отладчике это выглядит примерно так: myLibDomain.className у него нет выделенной памяти, я считаю, что пропущен шаг. Для AnyClass

нет метода init ()

1 Ответ

0 голосов
/ 29 октября 2019

Мне удалось заставить это работать, изменив строку 2 так:

if let referencedClass = NSClassFromString(className)?.alloc()

Это выглядит разумно? Я никогда не использовал это ключевое слово в swift, я смотрел на некоторые объективные решения этой же проблемы. ПРИМЕЧАНИЕ: 'referancedClass' в примере, с которым я работаю, не наследуется от NSObject

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