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 нет суперкласса.