NSClassFromString() всегда возвращает nil
Следующий код печатает nil
, несмотря на то, что ListCell
является допустимым классом.
var lCellClass : AnyClass! = NSClassFromString("ListCell");
println(lCellClass);
Документы говорят, что метод возвращает
Объект класса, названный именем aClassName, или nil
, если в данный момент класс не указан этим именем. Если aClassName nil
, возвращает nil
.
Я также попытался получить NSClassFromString()
текущего viewcontroller, который LOADED, но все равно получите nil
В чем может быть проблема?
Update:
Даже пытаясь сделать это NSClassFromString("Array")
, я все еще получаю nil
Ответы
Ответ 1
Функция NSClassFromString
работает для (чистых и Objective-C -расширенных) быстрых классов, но только если вы используете полное имя.
Например, в проекте под названием MyApp
с чистым классом swift под названием Person
:
let personClass: AnyClass? = NSClassFromString("MyApp.Person")
Для получения дополнительной информации см. Использование имен быстрых классов с API Objective-C в Использование Swift с Cocoa и Objective-C.
Ответ 2
Также возможно указать имя для символа в Objective-C, которое не допускает пространство имен в объекте C с помощью аннотации @objc. Если вы предпочитаете использовать имя без модуля, просто используйте одно и то же имя класса:
@objc(Foobar)
class Foobar{
}
NSClassFromString ( "Foobar" ) вернет класс Foobar.
Ответ 3
Это может быть проблема, связанная с тем, что ваш класс не распространяется на NSObject. По умолчанию у swift нет суперкласса.