我有一个typedef:
typedef NSString VMVideoCategoryType;
extern VMVideoCategoryType *const VMVideoCategoryType_MusicVideo;
extern VMVideoCategoryType *const VMVideoCategoryType_Audio;
extern VMVideoCategoryType *const VMVideoCategoryType_Performance;
extern VMVideoCategoryType *const VMVideoCategoryType_Lyric;
extern VMVideoCategoryType *const VMVideoCategoryType_Show;
我已将此文件包含在桥接标头中。但是,当我尝试访问Swift文件中的VMVideoCategoryType
时,出现错误:
Use of undeclared type 'VMVideoCategoryType'
有没有办法让这项工作或者我必须在Swift中完全重新定义这种类型?
答案 0 :(得分:11)
我有点推测,但原因似乎是Objective-C
像NSString
这样的对象无法静态分配(请参阅例如Are objects in Objective-C ever created on the stack?)。如果
typedef NSString VMVideoCategoryType;
导入Swift然后你可以声明一个局部变量
var foo : VMVideoCategoryType
这将是NSString
而不是指向NSString
的指针。
另请注意,您在Swift中看到的NSString
对应NSString *
在Objective-C中。
如果您将VMVideoCategoryType
定义为NSString *
的typedef
然后在Swift中 :
typedef NSString * VMVideoCategoryType;
extern VMVideoCategoryType const VMVideoCategoryType_MusicVideo;
// ...