自从使用Swift 2.2更新到Xcode 7.3后,我无法从外部Objective-C库访问变量。
从今天起我就能够访问这些变量:
extern NSString* const DEFAULT_URL;
这是在预编译的.a框架的Objective-C头文件中定义的。
在我的快捷代码中,我只需要拨打DEFAULT_URL
。
自Swift 2.2以来,我得到以下错误:
Use of unresolved identifier 'DEFAULT_URL'
我可以访问此框架的类和方法,但我无法访问extern NSStrings
。
任何想法如何解决这个问题?
答案 0 :(得分:34)
@patrickS我有一个愚蠢的原因,我的外部const是在我的.h文件中的@interface中定义的。这似乎使得这个版本的XCode / Clang的Swift代码变得私密。它适用于所有extern consts,而不仅仅是NSString *。
e.g。
//In Foo.h
extern const int kBlah
@interface Foo
...
@end
而不是
//In Foo.h
@interface Foo
extern const int kBlah
...
@end
答案 1 :(得分:2)
我有同样的问题,在问题中,ext字符串在我的情况下是在依赖管理( cough pod cough )第三方库中。因此,从长远来看,我不能轻易地移动它们而不会弄乱一切。
我找到了两个解决方案:
我告诉你,你认为这两种解决方案中哪一种不那么苛刻(我选择解决方案1,因为我很懒)。