2016-06-16 2 views
1

В моих файлах Obj-C, у меня есть статический член и поглотитель:доступа статических объективный метод C в Swift

//******* DBASplashViewController.m ******** 
static SWRevealViewController *staticRVC; 
+ (SWRevealViewController*)currentSWRevealViewController 
{ 
    return staticRVC; 
} 

//******* DBASplashViewController.h ******** 
+ (SWRevealViewController*)currentSWRevealViewController; 

В моем быстром коде, у меня есть сообщение об ошибке на этой линии:

let SWVC = DBASplashViewController.currentSWRevealViewController 

Error : *DBASplashViewController has no member currentSWRevealViewController*

EDIT:

Это мой шунтирующий файл:

#import "DBASplashViewController.h" 

Как вы можете видеть, DBASplashViewController прекрасно интерпретируется XCode, но не статический метод:

enter image description here

Что я сделал не так?

+0

См. Мой ответ по приведенной ниже ссылке. http://stackoverflow.com/questions/37859446/instantiate-objective-c-view-controller-in-swift/37860566#37860566 –

+0

у меня есть мост, DBASplashViewController признается, но currentSWRevealViewController не –

ответ

1

После долгого расследования выяснилось, что у меня отсутствует импорт в моем заголовке моста.

DBASplashViewController.currentSWRevealViewController() должен возвращать объект типа SWRevealViewController.

Оказывается, я забыл иметь линию в моем мостиковых заголовке:

#import "SWRevealViewController.h" 

Поскольку тип возвращаемого значения определяют на Swift части, я могу получить доступ к моей статической переменной.

0

Обратите внимание, что currentSWRevealViewController - это метод, а не свойство, и если вы хотите его выполнить, вы должны использовать следующие обозначения, в основном добавляя пару круглых скобок. В противном случае это вернет тип функции, которая на самом деле является (функция).

let SWVC = DBASplashViewController.currentSWRevealViewController() 

Если предположить, что у вас есть правильный Bridging заголовок и staticRVC переменные работы, как ожидается, это будет работать.

+0

с пусть SWVC = DBASplashViewController.currentSWRevealViewController() У меня такая же ошибка –

+0

@Imbru, как выглядит ваш файл заголовка Bridging? Я просто попытался воспроизвести вашу проблему, и я смог заставить ее работать отлично, проверьте проект .zip здесь. Http://jmp.sh/wXYRfn5 –

+0

У меня есть эта строка в моем заголовке моста: #import «DBASplashViewController.h». DBASplashViewController распознается. Я проверяю ваш образец проекта –

Смежные вопросы