Доступ к структуре extern const из Swift

Я не могу получить доступ к c-struct из Swift, который был создан с помощью M Generator.

Структура находится в реализации:

const struct MyAttributes MyAttributes = {
    .foo = @"foo",
};

А потом в шапке:

extern const struct MyAttributes {
    __unsafe_unretained NSString *foo;
} MyAttributes;

Я добавил импорт заголовка в заголовок моста. Но я не могу получить доступ к структуре из Swift. С Objective C я могу. Я подумал, что, возможно, Swift нужно объявление структуры, как оно есть в файле реализации, поэтому я попытался добавить файл .m в заголовок моста, но это не сработало. Я думаю, что не могу изменить структуру этих файлов, потому что они генерируются M Generator.

Как это исправить?

Спасибо.


person User    schedule 08.12.2014    source источник
comment
Или используйте быстрый флаг в могенератере. Тогда не нужно никаких мостов.   -  person Abizern    schedule 08.12.2014
comment
Большая часть моего кода все еще написана на Objective C.   -  person User    schedule 08.12.2014


Ответы (1)


С участием

#import "YourClass.h"

в файле заголовка моста вы можете получить доступ к структуре из Swift как

let fooAttr = MyAttributes.foo
println(fooAttr) // Output: "foo"
person Martin R    schedule 08.12.2014
comment
Хм, это было первое, что я попробовал, и по какой-то причине это не сработало. Однако мой код более сложный, поэтому причина должна быть в другом. Только что протестировал в новом проекте, и он работает. - person User; 08.12.2014
comment
Я столкнулся с тем же самым. Первоначально я думал, что он не работал из-за отсутствия завершения кода в xcode. Кто-нибудь знает, есть ли способ заставить быстрое завершение кода работать для таких структур? - person pbuchheit; 30.11.2015